记录编号 264602 评测结果 AAAAAWWWWA
题目名称 备用交换机 最终得分 60
用户昵称 Gravatarzjh001 是否通过 未通过
代码语言 C 运行时间 0.003 s
提交时间 2016-05-29 00:16:36 内存使用 0.29 MiB
显示代码纯文本
//http://www.cojs.tk/cogs/problem/problem.php?pid=8
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAXN 110

int n;
int opt[MAXN];
int ans[MAXN];
int sum,down=1;

struct node
{
       int u,v;
}e[MAXN];

int join(int x,int y)
{
    int a=x,b=y;
    while (a!=opt[a]) a=opt[a];
    while (b!=opt[b]) b=opt[b];
    opt[a]=b;
}

int find(int x)
{
    int a=x;
    while (a!=opt[a]) a=opt[a];
    return a;
}

int main()
{
    int i,j,tmp;
    
    freopen("gd.in","r",stdin);
    freopen("gd.out","w",stdout);
    
    scanf ("%d",&n);
    
    while (scanf ("%d%d",&e[down].u,&e[down].v)!=EOF) down++;
    
    down--;

    for (i=1;i<=n;i++)
    {
        memset(opt,0,sizeof(opt));
        
        for (j=1;j<=n;j++)
            opt[j]=j;
        
        for (j=1;j<=down;j++)
            if (e[j].u==i || e[j].v==i) continue;
            else
            {
                //if (i==3)
                         //printf ("%d %d\n",e[j].u,e[j].v);
                join(e[j].u,e[j].v);
            }
            /*
            printf ("\n");
        if (i==3)
        {
           for (j=1;j<=n;j++)
               printf ("%d ",find(j));
           printf ("\n");
        }
        */
        int last=-1;
        
        for (j=1;j<=n;j++)
        {
            if (j==i) continue;
            if (last==-1) last=find(j);
            int com=find(j);
            if (last!=com) 
            {
               sum++;
               ans[sum]=i;
               break;
            }
        }
    }
    
    printf ("%d\n",sum);
    
    for (i=1;i<=sum;i++)
        printf ("%d\n",ans[i]);
    
    return 0;
}
/*
7
1 2
2 3
2 4
3 4
4 5
4 6
4 7
5 6
6 7
*/