LA6576 VivoParc (2013-2014 ACM-ICPC Southwestern Europe Regional Contest G题) 搜索
来源:互联网 发布:收集数据的网站 编辑:程序博客网 时间:2024/06/15 15:07
题意:n个点构成的无向图,有4种颜色,给这n种染色,使得一条边对应的两点保证颜色不同。
思路:类似于四色定理的做法。输入比较恶心,需要注意。详见代码:
// file name: LA6576.cpp //// author: kereo //// create time: 2014年10月14日 星期二 17时16分08秒 ////***********************************//#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<set>#include<map>#include<vector>#include<stack>#include<cmath>#include<string>#include<algorithm>using namespace std;typedef long long ll;const int MAXN=100+100;const int inf=0x3fffffff;const int mod=1000000000+7;#define L(x) (x<<1)#define R(x) (x<<1|1)int n,edge_cnt;char str[MAXN];int col[MAXN],head[MAXN],mp[MAXN][MAXN];struct Edge{int v;int next;}edge[MAXN*MAXN*20];void init(){edge_cnt=0;memset(mp,0,sizeof(mp));memset(col,-1,sizeof(col));memset(head,-1,sizeof(head));}void addedge(int u,int v){edge[edge_cnt].v=v;edge[edge_cnt].next=head[u];head[u]=edge_cnt++;}bool dfs(int u){int c[5];memset(c,0,sizeof(c));for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v;if(col[v])c[col[v]]++;}for(int k=1;k<=4;k++) if(!c[k]){col[u]=k;int flag=1;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v;if(col[v] == -1){if(!dfs(v)){flag=0;break;}}}if(flag)return true;}col[u]=-1;return false;}int main(){//freopen("text","r",stdin);int kase=0;scanf("%d",&n);while(n){int tmp=0;if(kase)printf("\n");kase++;init();while(~scanf("%s",str)){int u=0,v=0,i=0,len=strlen(str);while(str[i] && str[i]!='-'){u=u*10+str[i]-'0';i++;}if(i == len){tmp=u;break;}i++;while(str[i]!='\0'){v=v*10+str[i]-'0';i++;}mp[u][v]=1; mp[v][u]=1;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(mp[i][j])addedge(i,j);for(int i=1;i<=n;i++) if(col[i]==-1)dfs(i);for(int i=1;i<=n;i++)printf("%d %d\n",i,col[i]);n=tmp;}return 0;}
0 0
- LA6576 VivoParc (2013-2014 ACM-ICPC Southwestern Europe Regional Contest G题) 搜索
- LA6575 Odd and Even Zeroes (2013-2014 ACM-ICPC Southwestern Europe Regional Contest F题) 规律
- LA6578 Trending Topic (2013-2014 ACM-ICPC Southwestern Europe Regional Contest I题) 模拟
- 2015-2016 ACM-ICPC Southwestern Europe Regional Contest (SWERC 15) C
- 2015-2016 ACM-ICPC Southwestern Europe Regional Contest (SWERC 15)训练总结【7/10】
- 2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14) [Gym-100543G]
- Problem C - Sums ACM/ICPC Central Europe Regional Contest 2014
- Problem D - Wheels ACM/ICPC Central Europe Regional Contest 2014
- Problem I - Bricks ACM/ICPC Central Europe Regional Contest 2014
- 【codeforces】2014-2015 ACM-ICPC, Central Europe Regional Contest (CERC 14) F Vocabulary【dp】
- 2014-2015 ACM-ICPC, Asia Xian Regional Contest G
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016)
- 2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15) F.Frightful Formula(大数NTT)
- 2014 ACM/ICPC Asia Regional Contest - B
- 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest G題:Flipping Parentheses [线段树]
- 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest G題 (线段树区间更新)
- 2013-2014 ACM ICPC Central European Regional Contest (CERC 13) K题(dp)
- 2013-2014 ACM ICPC Central European Regional Contest (CERC 13) I题Crane
- 第5周项目3表面积
- 解决:error : 元素 <EnableEnhancedInstructionSet> 具有无效值“AdvancedVectorExtensions”。
- 触摸屏A协议
- Linux 固件子系统一之如何更新固件
- Lua元表与元方法
- LA6576 VivoParc (2013-2014 ACM-ICPC Southwestern Europe Regional Contest G题) 搜索
- java面向对象 【专题】引用传递
- 等7周 项目4 “撞错”体验
- 三个数之间最大值
- 数据库--学习笔记1
- SubVersion配置和命令运行方式
- Eclipse常用快捷键汇总
- 第一天
- SDUTOJ 2711 4-2 电子时钟中的运算符重载