codeforces 624C 二分图染色
来源:互联网 发布:js array index 编辑:程序博客网 时间:2024/05/22 03:43
点击打开链接
//b和a,c都相连 不相连的只有a-c 所以原图中的两点无边只能为a-c
//在补图中确定颜色法案后,还要在原图中check一遍
#include <set>#include <map>#include <queue>#include <stack>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#include <vector>using namespace std;const int N =5e2+20;int n,m;vector<int> e[N];//补图的边 相邻两点为a-c //b和a,c都相连 不相连的只有a-c 所以原图中的两点无边则为a-c int g[N][N]; int vis[N];bool flag=true;void input(){cin>>n>>m;for(int i=1;i<=n;i++)vis[i]=-1; memset(g,0,sizeof(g)); for(int i=1;i<=m;i++){int u,v;cin>>u>>v;g[u][v]=g[v][u]=1;}for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++){if(g[i][j]==0){e[i].push_back(j);e[j].push_back(i);}}}}void dfs(int u,int f){if(!flag)return;if(e[u].size()==0)//breturn;if(f==-1)//2分图染色 第一次任意一个点染a即可 {vis[u]=1;}else{ if(vis[u]==-1) { vis[u]=f;}else if(vis[u]!=f)//已经染色的矛盾 {flag=0;return;}else//不重复染色 return;}for(int i=0;i<e[u].size();i++)dfs(e[u][i],1-vis[u]);// 1-vis[u]相反颜色 }void solve(){for(int i=1;i<=n;i++){if(vis[i]==-1){dfs(i,-1);if(!flag){cout<<"No"<<endl;return;}}}for (int i = 1; i <= n; i++) //最后要在原图check一遍 { for (int j = 1; j <= n; j++) { if (i == j)continue; if (g[i][j] == 1) { if (vis[i] == -1 || vis[j] == -1)continue; if (abs(vis[i] - vis[j]) == 1) { puts("No"); return; } } } } cout<<"Yes"<<endl;for(int i=1;i<=n;i++){if(vis[i]==-1)//没有在补图中染色的为b(在补图中无边) cout<<'b';else if(vis[i]==1)cout<<'a';elsecout<<'c';}cout<<endl;}int main(){input();solve(); return 0;}
0 0
- codeforces 624C 二分图染色
- CodeForces 624C【二分图染色】
- Codeforces 624C:Graph and String 二分图染色
- CodeForces 624C Graph and String(二分图染色)
- Codeforces Round #403 B 二分,C , 染色
- Codeforces Round #311 (Div. 2) C(技巧) *D(二分图染色)
- Codeforces Round #360 (Div. 2) -- C. NP-Hard Problem (DFS二分图染色法)
- Codeforces Round #360 (Div. 2) -- C. NP-Hard Problem (DFS二分图染色法)
- codeforces 557D Vitaly and Cyclef(二分图染色)
- CodeForces 687A - NP-Hard Problem(二分图染色)
- [Codeforces 27D] Ring Road 2 (二分图染色)
- Codeforces-687A NP-Hard Problem(二分图染色)
- Codeforces-557D Vitaly and Cycle(二分图染色)
- Codeforces Round #360 (Div. 2)——C. NP-Hard Problem(BFS染色判二分图)
- 二分图染色模板
- 二分图染色
- 二分图染色模板
- 【模板】二分图染色
- 神一般的C语言指针,你看懂多少?
- UVA 11992 线段树区间更新 + 两个lazy(二维线段树)
- LA 3026 Period (KMP失配函数)
- poj2175 Evacuation Plan 消圈算法(小组赛G)
- atof函数的实现
- codeforces 624C 二分图染色
- 计算机语言概述
- Spring面试总结1!
- php源码之路第三章第一节( 链表实现)
- matplotLib入门
- 【自考】——数据结构☞时间复杂度&平均查找长度
- strncpy的实现
- HDU 1231最大连续子序列dp入门
- Hdu1408 盐水的故事