求助,样例跟第一个测试点过了,其他四个不知道怎么全部RE
查看原帖
求助,样例跟第一个测试点过了,其他四个不知道怎么全部RE
591677
Mi_mo楼主2022/8/20 11:41
#include<stdio.h> 
typedef struct
{
	int len;
	int link[10005];	//与该结点相连的结点 
	int now;
}node;
node vex[10005];
int yes[10005];
int n;		//n个结点 
int m;		//m条边 
void dfs(int a)
{
	if(yes[a]!=1)
	{
		printf("%d ",a);
		yes[a]=1;
	}
	if(vex[a].now>=vex[a].len)
		return;
	for(int i=vex[a].now;i<vex[a].len;i++)
	{
		int temp=vex[a].link[vex[a].now];
		vex[a].now++;
		dfs(temp);
	}
}
void bfs(int a)
{
	if(yes[a]!=1)
	{
		printf("%d ",a);
		yes[a]=1;
	}
	if(vex[a].now>=vex[a].len)
		return;
	for(int i=vex[a].now;i<vex[a].len;i++)
	{
		if(yes[vex[a].link[i]]!=1)
		{
			printf("%d ",vex[a].link[i]);
			yes[ vex[a].link[i] ]=1;
		}
	}	
	for(int i=vex[a].now;i<vex[a].len;i++)
	{
		vex[a].now++;
		bfs(vex[a].link[i]);
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		vex[a].link[ vex[a].len ]=b;
		vex[a].len++;
	}
	for(int i=1;i<=n;i++)
	{
		if(vex[i].len>1)
		{
			for(int k=0;k<vex[i].len-1;k++)
			for(int j=0;j<vex[i].len-k-1;j++)		//排序 
			{
				if(vex[i].link[j]>vex[i].link[j+1])
				{
					int temp=vex[i].link[j+1];
					vex[i].link[j+1]=vex[i].link[j];
					vex[i].link[j]=temp;
				}
			}
		}
	}
	dfs(1);
	for(int i=1;i<=n;i++)
	{
		vex[i].now=0;
		yes[i]=0;
	}
	printf("\n");
	bfs(1);
} 

2022/8/20 11:41
加载中...