记录编号 |
264602 |
评测结果 |
AAAAAWWWWA |
题目名称 |
备用交换机 |
最终得分 |
60 |
用户昵称 |
zjh001 |
是否通过 |
未通过 |
代码语言 |
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
*/