Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

同学,直接广搜就好了

Posted by semonteer at 2006-03-27 21:41:40 on Problem 2781
In Reply To:又要贴代码了,加起来WA不下50次,求救啊!!! Posted by:qywyh at 2006-03-27 21:20:45
> #include <iostream>
> using namespace std;
> 
> int status[100000][101];
> int flag[200000];
> int deque[200000];
> 
> int main()
> {
> 
> 	int caseNum;
> 	int eachCaseNum;
> 	int i, j, p, q;
> 	int beg, end, tmpBeg;
> 	int ans;
> 	bool dFlag;
> 
> 	while (scanf("%d", &caseNum) != EOF)
> 	{		
> 		for (i=0; i<caseNum; i++)
> 		{
> 			scanf("%d", &eachCaseNum);
> 			scanf("%d", &eachCaseNum);
> 			status[i][0] = eachCaseNum;
> 			for (j=1; j<=eachCaseNum; j++)
> 			{
> 				scanf("%d", &status[i][j]);
> 			}
> 		}
> 		
> 		scanf("%d", &beg);
> 		scanf("%d", &end);
> 		tmpBeg = beg;
> 
> 		memset(flag, 0, 200000);
> 		memset(deque, 0, 200000);
> 
> 		p = 0;
> 		q = 0;
> 
> 		flag[beg] = -1;
> 		ans = 0;
> 		dFlag = false;
> 
> 		while (1)
> 		{
> 			for (i=1; i<=status[beg][0]; i++)
> 			{
> 				if (flag[status[beg][i]] != -1)
> 				{
> 					flag[status[beg][i]] = -1;
> 					deque[q++] = status[beg][i];
> 				}
> 			}
> 
> 			if (!dFlag)
> 			{
> 				deque[q++] = -1;
> 				dFlag = true;
> 			}
> 
> 			while (deque[p] == -1)
> 			{
> 				p++;
> 				ans++;
> 				dFlag = false;
> 			}
> 
> 			beg = deque[p++];
> 
> 			if (beg == end)
> 			{
> 				printf("%d %d %d\n", tmpBeg, end, ans);
> 				break;
> 			}
> 		}
> 		
> 	}
> 	return 0;
> }

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator