HDU3285——5285dfs——wyh2000 and pupil

/*
大意:给出m给不认识关系,要把他们分成两组,每组人都要认识
用一个col来记录是否相邻,如果出现奇数环会使得col[v] != 3 - color,不能省
如果不存在边,特判,分一个人过去

*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;

const int MAX = 100000 + 10;
vector <int> G[MAX];
int num[3];
int col[MAX];
bool dfs(int u, int color)
{
        num[color]++;
        col[u] = color;
        for(int i = 0; i < G[u].size(); i++){
                int v = G[u][i];
                if(col[v]){
                        if(col[v] != 3 - color)
                                return false;
                }
                if(!col[v]){
                        if(!dfs(v, 3 - color))
                                return false;
                }
        }
        return true;
}

int main()
{
     int T, a, b;
     int n, m;
     scanf("%d", &T);
     while(T--){
             scanf("%d%d", &n, &m);
             for(int i = 1; i <= n ;i++)
                     G[i].clear();
             memset(col, 0, sizeof(col));
             for(int i = 1; i <= m; i++){
                     scanf("%d%d", &a, &b);
                     G[a].push_back(b);
                     G[b].push_back(a);
             }
             int ans1 = 0, ans2 = 0;
             int flag = 0;
             for(int i = 1; i <= n; i++){
                     if(!col[i]){
                             num[1] = num[2] = 0;
                            if(!dfs(i, 1)){
                                     flag = 1;
                                     break;
                             }
                                     ans1 += max(num[1], num[2]);
                                     ans2 += min(num[1], num[2]);
                                    // printf("%d %d\n\n", ans1, ans2);
                     }
             }
             if(flag == 1 || n <= 1) printf("Poor wyh\n");
             else {
             if(m == 0)  ans1--,ans2++;
             printf("%d %d\n", ans1, ans2);
             }
     }
     return 0;
}
                     

  

posted @ 2015-07-20 20:31  Painting、时光  阅读(143)  评论(0编辑  收藏  举报