您的位置:首页 > 其它

UVa 193 - Graph Coloring

2013-05-16 10:37 357 查看
简单的搜索题

需要优化的地方:记录结点的颜色,如果不符合,cut掉

#include <stdio.h>
#include <string.h>
int m,n,max;
int map[110][110];
int node[110],ans[110];
int dfs(int cur)
{
if(cur>n)
{
int k=0;
for(int i=1;i<=n;i++)
if(node[i])k++;
if(k>max)
{
max=k;
for(int i=1;i<=n;i++)
ans[i]=node[i];
}
return 0;
}
node[cur]=0;
dfs(cur+1);
node[cur]=1;
for(int i=1;i<=cur;i++)
{
if(node[i]&&map[cur][i])
return 0;
}
dfs(cur+1);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int x,y;
scanf("%d%d",&n,&m);
memset(map,0,sizeof(map));
memset(ans,0,sizeof(ans));
for(int i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
map[x][y]=map[y][x]=1;
}
max=0;
dfs(1);
printf("%d\n",max);
int f=0;
for(int i=1;i<=n;i++)
{
if(ans[i])
{
if(f)printf(" ");
f=1;
printf("%d",i);
}
}
printf("\n");
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: