我是靠谱客的博主 忧虑西装,最近开发中收集的这篇文章主要介绍ural 1106,二分图染色,DFS,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1106

乍一眼看上去,好像二分图匹配,哎,想不出和哪一种匹配类似,到网上查了一下,DFS染色一遍就可以啦。

两种颜色的很好写。直接没有访问的是1,然后扫邻接表,为2,DFS邻接表。

#include <bits/stdc++.h>
using namespace std;
#define maxn 105
vector<int> G[maxn];
int color[maxn],vis[maxn];
void dfs(int u)
{
vis[u] = 1;
for(int i=0;i<G[u].size();i++)
{
int v = G[u][i];
if(!vis[v])
{
color[v] = 3 - color[u];
dfs(v);
}
}
}
int main()
{
int n,t;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
while(scanf("%d",&t),t)
G[i].push_back(t);
}
memset(vis,0,sizeof(vis));
memset(color,0,sizeof(color));
for(int i=1;i<=n;i++)
{
if(vis[i]==false)
{
color[i] = 1;
dfs(i);
}
}
int sum = 0;
for(int i=1;i<=n;i++)
if(color[i]==1)
sum++;
printf("%dn",sum);
for(int i=1;i<=n;i++)
if(color[i]==1)
printf("%d ",i);
return 0;
}
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/5927282.html

最后

以上就是忧虑西装为你收集整理的ural 1106,二分图染色,DFS的全部内容,希望文章能够帮你解决ural 1106,二分图染色,DFS所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部