Rt,报错是:
wrong output format Unexpected end of file - int32 expected
硬是没看懂,有没有大佬来帮个忙/kel
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,k,num;
int p[100005],clr[100005];
int vis[100005];
struct graph
{
int tot;
int hd[100005];
int nxt[400005],to[400005];
void add(int u,int v)
{
nxt[++tot]=hd[u];
hd[u]=tot;
to[tot]=v;
return ;
}
}s,g;
void dfs(int now)
{
p[++num]=now;
vis[now]=1;
if(num==k) return ;
for(int i=s.hd[now];i;i=s.nxt[i])
if(vis[s.to[i]]==0&&num<k) dfs(s.to[i]);
return ;
}
bool dfs2(int now,int fa)
{
vis[now]=1;
for(int i=g.hd[now];i;i=g.nxt[i])
if(g.to[i]==fa) continue;
else if(vis[g.to[i]]==1) return 1;
else if(dfs2(g.to[i],now)==1) return 1;
vis[now]=0;
return 0;
}
void dfs3(int now,int c)
{
clr[now]=c;
for(int i=g.hd[now];i;i=g.nxt[i])
if(clr[g.to[i]]==-1) dfs3(g.to[i],c^1);
return ;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
s.add(u,v);
s.add(v,u);
}
dfs(1);
for(int i=1;i<=k;i++)
for(int j=s.hd[p[i]];j;j=s.nxt[j])
if(vis[s.to[j]]==1) g.add(p[i],s.to[j]);
memset(vis,0,sizeof(vis));
if(dfs2(1,0))
{
puts("2");
memset(vis,0,sizeof(vis));
printf("%d\n",k);
for(int now=1,i=1;i<=k;i++)
{
printf("%d ",now);
vis[now]=1;
for(int j=g.hd[now];j;j=g.nxt[j])
if(vis[g.to[j]]==0){now=g.to[j];break;}
}
}
else
{
puts("1");
memset(clr,-1,sizeof(clr));
dfs3(1,1);
int cnt=0;
for(int i=1;i<=k;i++) cnt+=clr[p[i]]/*,printf("%d %d\n",p[i],clr[p[i]])*/;
if(cnt==(k+1)/2)
{
for(int i=1;i<=k;i++)
if(clr[p[i]]==1) printf("%d ",p[i]);
}
else
{
for(int i=1;i<=k;i++)
if(clr[p[i]]==0) printf("%d ",p[i]);
}
}
return 0;
}