poi2012 Tour de Byteotia
stupid_lulu
posted @ 2013年3月26日 02:08
in poi
, 4394 阅读
一眼题,不解释。。
#include<cstdio>
int n,m,k,ans=0;
int fa[1000001];
struct re{
int u,v;
} a[2000001];
re b[2000001];
int getfa(int x){return fa[x]==x? x:fa[x]=getfa(fa[x]);}
int main(){
//freopen("tou1a.in","r",stdin);
scanf("%d%d%d",&n,&m,&k);
for (int i=1;i<=n;i++) fa[i]=i;
for (int i=1;i<=m;i++){
scanf("%d%d",&a[i].u,&a[i].v);
if (a[i].u<=k||a[i].v<=k) continue;
int fx=getfa(a[i].u);
int fy=getfa(a[i].v);
if (fx!=fy){
fa[fx]=fy;
}
}
for (int i=1;i<=m;i++){
if (a[i].u>k&&a[i].v>k) continue;
int fx=getfa(a[i].u);
int fy=getfa(a[i].v);
if (fx==fy){
ans++;
b[ans].u=a[i].u;
b[ans].v=a[i].v;
}
else fa[fx]=fy;
}
printf("%d\n",ans);
for (int i=1;i<=ans;i++) printf("%d %d\n",b[i].u,b[i].v);
}
评论 (0)