cf#AIM Tech Round -C. Graph and String-贪心/ 二分图染色
来源:互联网 发布:毕业论文里的数据作假 编辑:程序博客网 时间:2024/05/23 00:10
http://codeforces.com/contest/624/problem/C
给一个图,要求还原出一个string,字符串只有abc三种字符。
一个字符x会和相同或者在字母表与之相邻的字母连边
即a和ab连,b和abc连,c和bc连
知道了这个后,b是和所有点相连的,度数为n-1
所有度数为n-1的点,都标记为b
然后我们随便找一个不是b的点X,我们标记为C
对于X 会和所有的B,C相连,因为B已经标记过了,那么我们遍历一遍X的所有邻接点,就可以把所有的C标记出来了
剩下的都标记为A
vis[i]=1 ---A
vis[i]=2 ---B
vis[i]=3 ---C
标记完所有点后,我们n^2验证一遍,
任意2个点如果 abs(vis[i]-vis[j]==2) 表明是a-c c-a这种边 需要满足 map[i][j]=0;
如果 abs(vis[i]-[j])<=1 就是其他边 需要满足map[i][j]=1;
枚举每一对点,如果不满足上述条件,no,全部判断完后。yes.
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <queue>#include <map>#include <set>#include <vector>#include <iostream>using namespace std;#define ptf(ar1,ar2) pr__int64f("%I64d:%I64d\n",ar1,ar2);typedef __int64 ll;const ll maxn = 131707+500;int vis[505];int cnt[505];int tm[505][505];int main(){int i,n;int j,m;cin>>n>>m;int x,y;for (i=1;i<=m;i++){scanf("%d%d",&x,&y);tm[x][y]=tm[y][x]=1;cnt[x]++;cnt[y]++;}for (i=1;i<=n;i++){if (cnt[i]==n-1)vis[i]=2; //为b}int who=0;for (i=1;i<=n;i++){if (vis[i]!=2) {vis[i]=3;who=i;break;} // C}if (!who){printf("Yes\n");for (i=1;i<=n;i++)printf("b");printf("\n");return 0;}for (i=1;i<=n;i++){if (tm[who][i]&& vis[i]!=2) //与C相连的只有b和Cvis[i]=3;}for (i=1;i<=n;i++){if (!vis[i])vis[i]=1;}//checkfor (i=1;i<=n;i++){for (j=i+1;j<=n;j++){if (abs(vis[i]-vis[j])==2) //a-c{if (tm[i][j]) {printf("No\n"); return 0 ;}}if (abs(vis[i]-vis[j])<=1) //a-b b-c c-c a-a b-b{if (!tm[i][j]){printf("No\n");return 0 ;}}}}printf("Yes\n");for (i=1;i<=n;i++){if (vis[i]==1) printf("a");else if (vis[i]==2) printf("b");else printf("c");}printf("\n");return 0 ;}
0 0
- cf#AIM Tech Round -C. Graph and String-贪心/ 二分图染色
- AIM Tech Round (Div. 2) C. Graph and String(二分图染色 | 贪心)
- AIM Tech Round (Div. 2)C - Graph and String(二分图染色)
- AIM Tech Round (Div. 2) C. Graph and String 二分图染色
- #AIM Tech Round [div2] C. Graph and String 【连通图、染色】
- AIM Tech Round (Div. 2) C. Graph and String
- AIM Tech Round [div2] C. Graph and String
- AIM Tech Round (Div. 2) C. Graph and String
- AIM Tech Round (Div. 2)-C. Graph and String
- cf#AIM Tech Round -B. Making a String-贪心/set
- Codeforces - AIM Tech Round (Div. 2)C - Graph and String(练习)
- Codeforces 624C:Graph and String 二分图染色
- CodeForces 624C Graph and String(二分图染色)
- Codeforces AIM Tech Round (Div. 1) A Graph and String 想法
- Codeforces AIM Tech Round (Div. 1)623A Graph and String
- CF623A Graph and String(二分图染色)
- AIM Tech Round 3 (Div. 2) C(贪心)
- CF AIM Tech Round 4上紫记
- Master HA彻底解密
- jQuery6(获取元素练习,改变标签样式及内容)
- 使用pycharm时候,借用Anaconda3的编译器
- 面试笔试杂项积累-leetcode 116-120
- Android 获取各种时间组合
- cf#AIM Tech Round -C. Graph and String-贪心/ 二分图染色
- JavaScript菜鸟教程Object2
- java中递归方法的应用--计算n的阶乘
- Intent的两种跳转方式
- 数据结构基础之串
- cf#AIM Tech Round -B. Making a String-贪心/set
- maven+springMVC+mybatis+junit详细搭建过程
- 我会的东西
- 基本算法——第九单元 递推