正文

Zoj 2740 Message System2008-02-17 16:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/cruxd/32725.html

分享到:

2753473 2008-02-17 16:25:45 Accepted 2740 C++ 00:00.00 436K C.D. 世界上最郁闷的事情,不是连续五个WA,而是连续莫名其妙的WA,却不知道错在哪里;比这更郁闷的事情,是改动之后的连续五个AC,却发现再也找不到刚才究竟错在哪里…… 遥想当年,浙大初赛时,雄姿英发;谈笑间,代码灰飞烟灭。故题重做,多情应笑我,迟来三年。卡了近三年的题目,回过头来再看也是一道简单题。 求图是否为连通生成树。预处理边数M,然后用并查集检查一下是否有回路,马上就可以解决。 因为满足生成树的情况下,M恒等于点数N-1,所以在预处理后就不需要考虑是否所有点都能够被访问。开始的时候写了一个BFS算法,遍历,结果失败。(我果然还是比较菜……= =) #include <cstdio>#include <string>int N, M, p[1001], num[1001];int init ();void init_set ();int find_set ( int );int union_set ( int, int );int main (){    //freopen ( "in.txt", "r", stdin );    while ( init () )    {    }    return 0;}void init_set (){    int i;    for ( i = 1; i <= N; i ++ )    {        p[i] = i;        num[i] = 1;    }}int find_set ( int x ){    int pre = x;    while ( p[pre] != pre )    {        pre = p[pre];    }    int root = pre;    while ( x != root )    {        int t = p[x];        p[x] = root;        x = t;    }    return root;}int union_set ( int x1, int x2 ){    int p1 = find_set ( x1 );    int p2 = find_set ( x2 );    if ( p1 == p2 )    {        return 0;    }    if ( num[p1] > num[p2] )    {        num[p2] += num[p1];        p[p1] = p2;    }    else    {        num[p1] += num[p2];        p[p2] = p1;    }    return 1;}int init (){    scanf ( "%d %d", &N, &M );    if ( N == 0 )        return 0;    int i, ac = 1;    if ( N != M + 1 )    {        printf ( "No\n" );        for ( i = 0; i < M; i ++ )        {            int x, y;            scanf ( "%d %d", &x, &y );        }    }    else    {        init_set ();        for ( i = 0; i < M; i ++ )        {            int x, y;            scanf ( "%d %d", &x, &y );            if ( union_set ( x, y ) == 0 )            {                ac = 0;            }        }        if ( ac )        {            printf ( "Yes\n" );        }        else        {            printf ( "No\n" );        }    }    return N;}

阅读(2871) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册