记录编号 |
154656 |
评测结果 |
AAAAAAAAAA |
题目名称 |
备用交换机 |
最终得分 |
100 |
用户昵称 |
ok |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2015-03-23 19:05:15 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <deque>
using namespace std;
deque<int> a[101],st;
int n,ans=0,ji=0,dfn[101]={0},low[101]={0},se[101]={0};
bool res[101]={0};
int tarjan(int x)
{
int tot=0,i,mmm;
dfn[x]=low[x]=++ji;
se[x]=1;
for(i=0;i<(int)a[x].size();i++)
{
mmm=a[x][i];
if(!se[mmm])
{
tot++;
tarjan(mmm);
low[x]=min(low[x],low[mmm]);
if(dfn[x]>1&&low[mmm]>=dfn[x]&&!res[x])
{
ans++;
res[x]++;
}
if(dfn[x]==1&&tot>1&&!res[x])
{
ans++;
res[x]++;
}
}
else low[x]=min(low[x],dfn[mmm]);
}
se[x]=2;
return 0;
}
int main()
{
int i,b,c;
freopen ("gd.in","r",stdin);
freopen ("gd.out","w",stdout);
scanf("%d",&n);
while(scanf("%d%d",&b,&c)>=2)
{
a[b].push_back(c);
a[c].push_back(b);
}
tarjan(1);
printf("%d\n",ans);
for(i=1;i<=n;i++)
{
if(res[i]) printf("%d\n",i);
}
return 0;
}