HDU 5285  wyh2000 and pupil
Time Limit:1500MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
 

Description

Young theoretical computer scientist wyh2000 is teaching his pupils. 

Wyh2000 has n pupils.Id of them are from 

Input

In the first line, there is an integer 

Output

For each case, output the answer.

Sample Input

2
8 5
3 4
5 6
1 2
5 8
3 5
5 4
2 3
4 5
3 4
2 4

Sample Output

5 3
Poor wyh

/*/
二分图染色法判定

题解: 把两个相连的点标记颜色为不同颜色1和0,表示两位同学相互不认识; 统计两个颜色的个数。 注意,应为可能出现多个联通块的情况,这时候只要将各个联通块的最少的颜色 加起来,用总人数减去这个和就是人数最多那个组的人数了。 本题还要注意几个特判。 AC代码: /
*/
#include"algorithm"
#include"iostream"
#include"cstring"
#include"cstdlib"
#include"string"
#include"cstdio"
#include"vector"
#include"cmath"
#include"queue"
using namespace std;
#define memset(x,y) memset(x,y,sizeof(x))
#define memcpy(x,y) memcpy(x,y,sizeof(x))
#define MX 500005

struct Edge {
	int v,nxt;
} E[MX*2];

int col[3];

int Head[MX],erear;

void edge_init() {
	erear=0;
	memset(E,0);
	memset(Head,-1);
}
void edge_add(int u,int v) {
	E[erear].v=v;
	E[erear].nxt=Head[u];
	Head[u]=erear++;
}

int color[MX];
bool DFS(int u,int c) {
	color[u]=c;
	if(color[u]==1) {
		col[1]++;
	} else col[0]++;
	for(int i=Head[u]; ~i; i=E[i].nxt) {
		int v=E[i].v;
		if(color[v]!=-1&&color[u]==color[v]) return 0;
		else if(color[v]==-1) {
			if(DFS(v,c^1)==0) return 0;
		}
	}
	return 1;
}

int main() {
	int n,m;
	int T;
	cin>>T;
	while(T--) {
		scanf("%d%d",&n,&m);
		edge_init();
		for(int i=1; i<=m; i++) {
			int u,v;
			scanf("%d%d",&u,&v);
			edge_add(u,v);
			edge_add(v,u);
		}
		if(n<2) {
			puts("Poor wyh");
			continue;
		}
		if(!m) {
			printf("%d 1\n",n-1);
		}
		memset(color,-1);
		bool sign=1;
		int minn=0;
		for(int i=1; i<=n; i++) {
			if(color[i]==-1) {
				memset(col,0);
				sign=DFS(i,0);
				minn+=min(col[0],col[1]);
				if(!sign)break;
			}

		}
		if(!sign)puts("Poor wyh") ;
		else printf("%d %d\n",n-minn,minn);
	}
	return 0;
}

  

相关文章:

  • 2021-07-06
  • 2022-12-23
  • 2021-10-16
  • 2021-12-06
  • 2022-01-28
  • 2022-12-23
  • 2021-05-18
猜你喜欢
  • 2021-05-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2022-12-23
相关资源
相似解决方案