UVA 10054

来源:互联网 发布:linux 文件倒序 编辑:程序博客网 时间:2024/06/04 18:23
/*欧拉回路*//*这到题UVA 虽然AC但是因为 给的数据有点弱,其实还有种情况:需要判断一下图是否是一个连通图,比如说如果最好串成了2条项链,而不能穿成一条,就应该输出不存在*///判断联通可以在最后输出前扫一下,很简单我就不写了#include <stdio.h>#include <string.h>int map[200][200], vis[200][200];int num[100];typedef struct{    int u, v;}p;p stack[1000];int top, n;void push( int u, int v ){    stack[top].u = u;    stack[top].v = v;    top++;}p pop(){   return stack[--top]; }void euler( int u ){    int v;    for( v = 1; v <= 60; v++ )        if( map[u][v] )        {            map[u][v]--;            map[v][u]--;            euler(v);            push(u, v);        }}int empty(){    if( top == 0 )        return 1;    return 0;}int main(){    freopen( "in", "r", stdin  );    p ps;    int T, i, j, cout = 0, u, v,flag, t;    scanf( "%d", &T );    while( T-- )    {        t = 0;        flag = 0;        memset( num, 0, sizeof(num) );        memset(stack, 0, sizeof(stack) );        memset(map, 0, sizeof(map) );        memset(vis, 0, sizeof(vis) );        scanf( "%d", &n );        for( i = 1; i <= n; i++ )        {            scanf( "%d%d", &u, &v );            if( u != v )                t = 1;            map[u][v]++;            map[v][u]++;            num[u]++;            num[v]++;        }        if( !t )        {            printf( "Case #%d\n", ++cout );            while( n-- )                printf( "%d %d\n", u, v );            printf( "\n" );            continue;        }        for( i = 1; i <= 60; i++ )                if( num[i] % 2 )                    flag = 1;        if( flag )        {            printf( "Case #%d\n", ++cout );            printf( "some beads may be lost\n\n" );        }        else        {            for( i = 1; i <= 60; i++ )                if( num[i] > 0 )                {                    euler( i );                    break;                }               printf( "Case #%d\n", ++cout );            while( !empty() )            {                ps = pop();                printf( "%d %d\n", ps.u, ps.v );            }            printf( "\n" );        }    }    return 0;}


原创粉丝点击