博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
这是一篇被河蟹了的博客
阅读量:5897 次
发布时间:2019-06-19

本文共 1383 字,大约阅读时间需要 4 分钟。

LG 1330 封锁阳光大学

黑白染色

①每一条边所连接的点中,至少要有一个被选中。②每一条边所连接的两个点,不能被同时选中。由此,可以推断出:

每一条边都有且仅有一个被它所连接的点被选中。

又因为我们要处理的是一个连通图。所以,对于这一个图的点的选法,可以考虑到相邻的点染成不同的颜色。

于是,对于一个连通图,要不就只有两种选法(因为可以全部选染成一种色的,也可以全部选染成另一种色的),要不就是impossible!      

-------KesdiaelKen dalao

 

其实就是普通bfs(逃

#include
#include
#include
#include
#include
using namespace std;queue
q;int n,m,x,y;int ans;int now;int now_2;int now_3;struct E { int to; int next;} edge[200010];int e_sum=0;int col[10010];int point[10010];bool foot[10010];void add(int from,int to) { ++e_sum; edge[e_sum].to=to; edge[e_sum].next=point[from]; point[from]=e_sum; return;}void bfs(int s) { if(foot[s]==true) return; foot[s]=true; now_2=0; now_3=0; q.push(s); col[s]=2; ++now_2; while(!q.empty()) { now=q.front(); q.pop(); for(int i=point[now]; i!=0; i=edge[i].next) { if(col[edge[i].to]==0) { col[edge[i].to]=col[now]^1; if(col[edge[i].to]==2) ++now_2; else ++now_3; q.push(edge[i].to); foot[edge[i].to]=true; } else if(col[edge[i].to]==col[now]) { cout<<"Impossible"; exit(0); } } } ans+=min(now_2,now_3); return;}int main() { ios::sync_with_stdio(false); cin>>n>>m; for(int i=1; i<=m; i++) { cin>>x>>y; add(x,y); add(y,x); } for(int i=1; i<=n; i++) bfs(i); cout<

我交了十几遍....

转载于:https://www.cnblogs.com/Alarak26/p/9166044.html

你可能感兴趣的文章
SqlDataAdapter DataSet DataTable 详解
查看>>
Android Xutils 框架
查看>>
C#基础知识整理 基础知识(21) 委托(二)
查看>>
Android应用程序键盘(Keyboard)消息处理机制分析(16)
查看>>
Sysbench 0.5版安装配置
查看>>
统一沟通-技巧-11-Lync-联盟-无法-音频-远程桌面-传文件
查看>>
书摘—你不可不知的心理策略
查看>>
【博客话题】毕业——开始人生的艰苦历程
查看>>
2014.7.30-8.3日广大网友的提问解答(答问题的第2个工作周)
查看>>
Powershell管理系列(二十五)PowerShell操作之获取AD账号及邮箱信息
查看>>
android开发 更新升级安装到一半自动闪退
查看>>
Linux安装telnet
查看>>
linux 标准I/O (二)
查看>>
【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物...
查看>>
IOS 消息机制(NSNotificationCenter)
查看>>
JAVA 设计模式 策略模式
查看>>
openstack nova修改实例路径,虚拟磁盘路径
查看>>
java.sql.SQLException: Lock wait timeout exceeded --转
查看>>
使用C#进行图像处理的几种方法(转)
查看>>
Ajax原理学习
查看>>