hdu 5285
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n,m;
vector<int> vec[100005];
int color[100005];
int ans = 0;
int bfs(int s){
queue<int> que;
int wri = 0;
int bla = 0;
que.push(s);
color[s] = 1;
wri++;
while(!que.empty()){
int u = que.front();
que.pop();
int si = vec[u].size();
for(int i = 0;i < si;i ++){
int v = vec[u][i];
if(color[v]){
if(color[v] == color[u]){
return false;
}
}
else{
color[v] = 3 - color[u];
if(color[v]==1){
wri++;
}
else{
bla++;
}
que.push(v);
}
}
}
ans += max(wri,bla);
return true;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,m;
ans = 0;
scanf("%d%d",&n,&m);
for(int i = 1;i <= n;i++){
vec[i].clear();
color[i] = 0;
}
if(n == 0){
printf("Poor wyh\n");
continue;
}
for(int i = 0;i < m;i++){
int x,y;
scanf("%d%d",&x,&y);
vec[x].push_back(y);
vec[y].push_back(x);
}
int flag = 0;
for(int i = 1;i <= n;i++){
if(!color[i]){
if(!bfs(i)){
flag = 1;
break;
}
}
}
if(flag){
printf("Poor wyh\n");
}
else{
if(m == 0){
if(ans == 1){
printf("Poor wyh\n");
}else{
printf("%d %d\n",ans-1,1);
}
}else{
printf("%d %d\n",ans,n-ans);
}
}
}
return 0;
}
要注意 0 0 的时候输出的是poor
要注意m == 0的时候

浙公网安备 33010602011771号