Sun大学


第一步:

第二步:

CodeCodeCode:

#include<bits/stdc++.h>
#include<unordered_set>
#include<unordered_map>
#define mem(a,b) memset(a,b,sizeof a)
#define cinios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define sca scanf
#define pri printf
#define ul (u << 1)
#define ur (u << 1 | 1)
//#define x first
//#define y second
//#pragma GCC optimize(2)
//[博客地址](https://blog.csdn.net/weixin_51797626?t=1)
using namespace std;typedef long long ll;
typedef pair<int, int> PII;
typedef pair <ll, PII> PI;const int N = 10010, M = 200010, MM = N;
int INF = 0x3f3f3f3f, mod = 100003;
ll LNF = 0x3f3f3f3f3f3f3f3f;
int n, m, k, T, S, D;
int h[N], e[M], ne[M], idx;
int color[N], wri, bla;
bool st[N];void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}bool col(int x, int c) {color[x] = c;for (int i = h[x]; ~i; i = ne[i]) {int j = e[i];if (color[j]) {if (color[j] == c)return false;}else if (!col(j, 3 - c))return false;}return true;
}void dfs(int x) {st[x] = true;if (color[x] == 1)wri++;else bla++;for (int i = h[x]; ~i; i = ne[i]) {int j = e[i];if (st[j])continue;dfs(j);}
}int main() {cinios;cin >> n >> m;mem(h, -1);for (int i = 1; i <= m; i++) {int a, b;cin >> a >> b;add(a, b), add(b, a);}for (int i = 1; i <= n; i++)if (!color[i]) { //标准染色,判断有无解if (!col(i, 1)) {cout << "Impossible";return 0;}}int ans = 0;for (int i = 1; i <= n; i++)if (!st[i]) {wri = bla = 0;dfs(i);ans += min(wri, bla);//选点数较小的}cout << ans;return 0;
}
/*
10 8
8 2
1 5
5 10
5 3
3 6
7 8
5 2
4 3
*/

洛谷:P1330 封锁阳光大学(二分图染色 + 最小同色点覆盖)相关推荐

  1. 洛谷 P1330 封锁阳光大学 二分图染色

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  2. 洛谷 P1330 封锁阳光大学 Label:染色问题

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  3. 洛谷P1330 封锁阳光大学

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  4. 洛谷 P1330 封锁阳光大学题解

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  5. 【C++】洛谷P1330 封锁阳光大学

    封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由 nnn 个点构成的 ...

  6. 洛谷P1330封锁阳关大学口胡实况

    原题目见洛谷(https://www.luogu.org/problemnew/show/P1330) 这道题如果仔细想想的话其实河蟹的分布就是对这张图进行黑白染色,且相邻的两点要染成不同的颜色,如果 ...

  7. P1330 封锁阳光大学

    P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构 ...

  8. Luogu P1330 封锁阳光大学【Dfs】 By cellur925

    题目传送门 这道题我们很容易去想到二分图染色,但是这个题好像又不是一个严格的二分图. 开始的思路:dfs每个点,扫与他相邻的每个点,如果没访问,染相反颜色:如果访问过,进行检查,如果不可行,直接结束程 ...

  9. luogu P1330 封锁阳光大学

    嘟嘟嘟 又刷了一道水题-- 很显然只要判断这个图是否是二分图就行了,判断方法就是染色.如果对于边(u->v),两个点颜色相同,那么就说明图中存在奇环,不是二分图. 统计答案的时候输出两种颜色较小 ...

  10. 黑白染色——封锁阳光大学

    所谓黑白染色,就是指用bfs或dfs依次遍历每一个点,同时进行染色,一黑一白,如果遇到已经染过色的点并且点的颜色和即将要染的颜色冲突,就说明无法进行二分,无法满足染色.大概就是这样的. 下面我们看一道 ...

最新文章

  1. 【Verilog HDL 训练】第 09 天(按键消抖)
  2. LeetCode之Missing Number
  3. 如期而至,GCC 4.9.0正式版发布!
  4. “阿法狗”之父:关于围棋,人类3000年来犯了一个错
  5. java从入门到精通第11章_《Java从入门到精通》第十章学习笔记
  6. Spring Boot文档阅读笔记-FileHandling解析及抓包分析
  7. Python类的self
  8. 2的指数算法唯一算包含信息
  9. 5.Knockout.Js(自定义绑定)
  10. 面试题57 - II. 和为s的连续正数序列
  11. 阿里Java开发手册思考(二)
  12. Linux下计算进程的CPU占用和内存占用的编程方法[转]
  13. Google Chrome Frame 自定义渲染方式,调用ActiveX
  14. 算法训练 递归输出数字三角形
  15. 计算机术语CPI是什么意思,cpi是什么意思
  16. Unity Driven 属性(代码控制属性)使用示例
  17. Nonebot QQ机器人插件八:点歌(网易云音乐)
  18. 美女SEO系列六:什么是友情链接?
  19. 寒假自学数学建模(2)相关系数
  20. 【软件】网梭浏览器v2.4.7 思路

热门文章

  1. html中div中加背景图片,div background css设置div背景图片
  2. 大话设计模式——解释器模式
  3. 用scrapy-splash爬取淘宝
  4. 读书202101『股票大作手回忆录』
  5. php 网络留言系统总结心的,留言板_感谢您的留言_代潇瑞博客-专注于PHP学习,PHP源码分享...
  6. 二元函数偏导数公式_二阶偏导数公式详解
  7. HDU5211——Mutiple
  8. ubuntu 安裝deb_ubuntu安装deb
  9. python接收163邮件以及下载附件(以163邮箱为例)
  10. Unexpected EOF read on the socket