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

为什么我的一直WA,这不就是拓扑排序吗???

Posted by panning025 at 2012-07-19 09:58:04 on Problem 1270
#include<iostream>
using namespace std;
int indegree[20]={0};//入度数组
char vex[20];//节点数组
bool v[20]={0};//标记数组,标记节点是否已访问
int len;//节点个数
char stack[20];//存放结果的栈
int top=-1;
bool bian[20][20]={0};//存放边

void Iopo_Sort(int &sum)//拓扑排序(递归)
{
	int i,j;
	if(sum==300)return;
	if(top==len-1)
	{
		for(i=0;i<len;i++)cout<<stack[i];
		cout<<endl;
		sum++;
		return;
	}
	for(i=0;i<len;i++)
	{
		if(indegree[i]==0&&!v[i])
		{
			stack[++top]=vex[i];
			v[i]=1;
			for(j=0;j<len;j++)
				if(bian[i][j])indegree[j]--;

			Iopo_Sort(sum);

			//===恢复记录==============

			for(j=0;j<len;j++)
				if(bian[i][j])indegree[j]++;
			v[i]=0;
			top--;
		}
	}
}
int main()
{
	int i=0,j=0,k=0,sum=0;
	char c[210],d[110];
	while(gets(c))
	{
		
		//=============处理节点===========
		i=0;
		j=0;
		while(c[i]!='\0')
		{
			if(c[i]!=' ')vex[j++]=c[i++];
			else i++;
		}
		len=j;
		//========================
		//===========处理边和入度=============
		gets(c);
		
		k=0;
		i=0;
		while(c[k]!='\0')
		{
			if(c[k]==' ')k++;
			else
				d[i++]=c[k++];
		}
		char e,f,t1;
		for(j=0;j<i;j++)
		{
			e=d[j++];
			f=d[j];
			for(t1=0;t1<len;t1++)if(vex[t1]==e)break;
			for(k=0;k<len;k++)if(vex[k]==d[j]){indegree[k]++;break;}
			bian[t1][k]=1;	
		}
		//=======================================
		sum=0;
		Iopo_Sort(sum);

		//================清理记录=========================
		for(i=0;i<20;i++)memset(bian,0,sizeof(bian));
		memset(v,0,20);
		memset(indegree,0,sizeof(indegree));
		top=-1;
		//===========================================
		
	}
	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