POI2010 BZOJ2079 Guilds - 结论题

题目链接:右转进入题目

题目大意:请自行阅读原题

解:和cf风格类似的题,就是这种思路题。

不难发现如果两个点是联通的,那么两个点都会满足条件。

(因为发现这个点不涂色是不划算的,只要两个点涂上不同的颜色即可)

所以任务变为图中是否有孤立的点。

随便怎么判一下即可。

这个题没有自环,如果有的话还需要特判一下。

代码:

#include
#include
#define MAXN 200010
using namespace std;
int sz[MAXN];
int main()
{
	int n,m;scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int u,v;scanf("%d%d",&u,&v);
		if(u!=v) sz[u]++,sz[v]++;
	}
	for(int i=1;i<=n;i++)
		if(!sz[i])
		{
			printf("NIE\n");
			return 0;
		}
	printf("TAK\n");return 0;
}

你可能感兴趣的:(BZOJ,结论题)