题目描述

曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。

阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在与这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。

询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。

输入输出格式

输入格式:

第一行:两个整数N,M

接下来M行:每行两个整数A,B,表示点A到点B之间有道路相连。

输出格式:

仅一行:如果河蟹无法封锁所有道路,则输出“Impossible”,否则输出一个整数,表示最少需要多少只河蟹。

输入输出样例

输入样例#1:

【输入样例1】
3 3
1 2
1 3
2 3【输入样例2】
3 2
1 2
2 3

输出样例#1:

【输出样例1】
Impossible【输出样例2】
1

说明

【数据规模】

1<=N<=10000,1<=M<=100000,任意两点之间最多有一条道路。

代码

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #include<vector>
 6 using namespace std;
 7 int n,m,a[100005],vis[100005],t[2],v,u,ans;
 8 vector<int> G[100005];
 9
10 int dfs(int v,int col){
11     vis[v]=1;
12     a[v]=col;
13     t[col]++;
14     for(int i=0;i<G[v].size();i++){
15         int p=G[v][i];
16         if(vis[p]&&a[p]==a[v]) return 0;
17         else
18             if(!vis[p])
19                 if(!dfs(p,col^1)) return 0;
20     }
21     return 1;
22 }
23
24 int main(){
25 //    freopen("01.in","r",stdin);
26     scanf("%d%d",&n,&m);
27     for(int i=1;i<=m;i++){
28         scanf("%d%d",&u,&v);
29         G[u].push_back(v);
30         G[v].push_back(u);
31     }
32
33     for(int i=1;i<=n;i++){
34         if(!vis[i]){
35             vis[i]=1;
36             t[0]=t[1]=0;
37             if(!dfs(i,1)){
38                 puts("Impossible");
39                 return 0;
40             }
41             ans+=min(t[0],t[1]);
42         }
43     }
44     printf("%d\n",ans);
45     return 0;
46 }

转载题解:

题目要求每条边的两个端点有且只有一个被封锁,可以对图进行黑白染色,若不存在染色方案则无解,若存在染色方案则答案为两种颜色中所用次数较少的那种的次数。

注意:

1,图是不联通的,要多次dfs;//怎么老想到移动......

2,要选两种方案中次数最少的次数!!!

转载于:https://www.cnblogs.com/radiumlrb/p/5875500.html

洛谷 P1330 封锁阳光大学 Label:染色问题相关推荐

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

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

  2. 洛谷P1330 封锁阳光大学

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

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

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

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

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

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

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

  6. P1330 封锁阳光大学

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

  7. luogu P1330 封锁阳光大学

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

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

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

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

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

最新文章

  1. 平衡不完全区组设计 数据分析的SAS实践
  2. Android4: HDMI system in ICS
  3. spyder开多个程序_【程序源代码】基于Vue+ElementUI web开发框架
  4. linux将文件下载到本地windows,XSHELL下直接下载文件到本地(Windows)
  5. XML文件的写入和读取(解析)基于DOM4J工具
  6. 从零开始学前端:浮动 --- 今天你学习了吗?(CSS:Day15)
  7. TCP粘包问题的解决方案01——自定义包体
  8. python免费课程400节-庆国庆!新更新!《Python400集》课程更新 共14节
  9. String 将GBK转UTF-8
  10. IT人的地摊不就是开源么 | 凌云时刻
  11. oracle打开dmp文件乱码,oracle中导入dmp字符乱码分析和解决方案
  12. Linux -- 查找文件内容或文件位置
  13. UE4读写txt文本文件(虚幻4)
  14. mysql数据库基础:存储过程和函数
  15. 计算机网络自顶向下方法 第三章 运输层 3.4 可靠数据传输原理
  16. Rstudio与R的绑定和更新
  17. 【论文阅读31】《OptCuts: Joint Optimization of Surface Cuts and Parameterization》
  18. java+SpringBoot+HTML+Mysq基于微信小程序的掌上博物馆游览
  19. C#数字金额转人民币大写金额的实现
  20. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类

热门文章

  1. 什么是COM与DCOM
  2. 专为SaaS而生的PaaS平台!
  3. C++中三种正则表达式比较
  4. SQL Server游标的使用【转】
  5. Java实现图片裁剪预览功能
  6. 安装rebar时提示Uncaught error in rebar_core
  7. Kosaraju 算法检测有向图的强连通性
  8. 任意次序的n个烙饼最小反转次数求解 暑期学习笔记(十)
  9. .NET 2.0 泛型在实际开发中的一次小应用
  10. 用友云微服务架构下配置文件管理利器:配置中心