uva 10054

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <stack>

using namespace std;

const int maxn = 50+20;
const int n = 50;

int deg[maxn], G[maxn][maxn], m;

void euler(int u){
    for(int v=1; v<=n; v++){    //這裏是n而非m
        if(G[u][v]){
            G[u][v]--;
            G[v][u]--;
            euler(v);
            printf("%d %d\n", v, u);
        }
    }
}

int main(){
    int T, u, v, kase=0;
    cin >> T;
    while(T--){
        cin >> m;

        memset(deg, 0, sizeof(deg));
        memset(G, 0, sizeof(G));

        for(int i=0; i<m; i++){
            cin >> u >> v;
            G[u][v]++;
            G[v][u]++;
            deg[u]++;
            deg[v]++;
        }

        bool flag = true;

        for(int i=1; i<=n; i++){    //這裏也是n非m
             if(deg[i] % 2 == 1) { flag = false; break; }
        }

        if(kase) putchar('\n');

        if(flag){
            printf("Case #%d\n", ++kase);
            euler(u);
        }
        else printf("Case #%d\nsome beads may be lost\n", ++kase);
    }

    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章