WA on #17求助
查看原帖
WA on #17求助
195331
Mine_KingCattleya楼主2021/12/7 21:52

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;
}
2021/12/7 21:52
加载中...