| 
 | ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
| 新手,不明白,能得出正确的结果,为什么是wrong answer我的源代码
#include <stdio.h>
int List[500][30001];
int n,m,index=1;
int rec[30001];
int visited[500];
void insertRec(int i) //用i组的所有成员都加入怀疑对象数组
{
	int j;
	rec[0]+=List[i][0];
	for(j=1;j<=List[i][0];j++)
	{
		rec[index++]=List[i][j];
	}
}
int searchInList(int x,int i)	//第i组中是否存在x
{
	int j;
	for(j=1;j<=List[i][0];j++)
		if(x==List[i][j])
			return 1;
	return 0;
}
	
	
void input(int m)	//输入数据
{
	int i,j,nMembers;
	for(i=0;i<m;i++)
	{
		visited[i]=0;
		scanf("%d",&nMembers);
		List[i][0]=nMembers;
		for(j=1;j<=nMembers;j++)
		{
			scanf("%d",&List[i][j]);
			if(List[i][j]==0)
			{
				visited[i]=1;
				rec[0]+=(List[i][0]-1);
				insertRec(i);
			}
		}
	}
}
void main()		//主程序
{
	int finish,i,j;
	while(scanf("%d %d",&n,&m))
	{
		if((n==0)&&(m==0))
			return;
		if((n==1)&&(m==0))
		{
			printf("%d\n",n);
			continue;
		}
		
		finish=0;
		rec[0]=1;
		input(m);
		while(!finish)
		{
			finish=1;
			for(i=0;i<m;i++)
			{
				if(visited[i]==0)
				{				
					for(j=1;j<index;j++)
					{
						if(searchInList(rec[j],i))
						{
							finish=0;
							visited[i]=1;
							insertRec(i);
							break;
						}
					}
				}
			}
		}
		printf("%d\n",rec[0]);
	}
}
Followed by: 
 Post your reply here: | 
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator