首页 > 代码库 > 找环 存在问题

找环 存在问题

#include<iostream>
int num,zu;
int a[50][2]={0};
int visit[11]={0};
int data[11][11]={0};
int tou=0;
int wei=1;
int last;
int flag=0;
int k=0;
typedef struct node
{
	int x;
	int pre;
}node;
node point[100000]={0};
void prin(int i)
{
    if(i==-1)
        return;
   
    //printf("(%d,%d)\n",dui[i].x ,dui[i].y );
	printf("%d",point[i].x);
     prin(point[i].pre);

}
void bfs()
{
	while(tou<wei)
	{
			  // while(point[tou].pre--)
					//{     
					//	if(point[tou].x==point[point[tou].pre].x)
					//	{    flag=1;
					//		last=tou;
					//		/*printf("%d",ouwei);
					//		printf("%d",point[wei].pre);
					//		printf("\n");*/
					//		prin(last);
					//		return;
					//	}
					//} 
		for(int k=1;k<=num;k++)
		{
			if(data[point[tou].x][k]==1)
	  	     {      
				data[point[tou].x][k]=0;
				point[wei].x=k;
				//printf("%d",point[wei].x);
				point[wei].pre=tou;
				wei++;		
		     }		
    	}
		tou++;
	}
	
}
int main()
{     freopen("input.txt","r",stdin);
      scanf("%d%d",&num,&zu);
	   for(int i=0;i<zu;i++)
	     {
		     for(int j=0;j<2;j++)
		    {  scanf("%d",&a[i][j]);}
	     }
	   for(int i=0;i<=zu;i++)
	    {
		data[a[i][0]][a[i][1]]=1;
	    }
	   for(int i=1;i<=num;i++)
	   {
		   for(int j=1;j<=num;j++)
		   {
			   printf("%d",data[i][j]);
		   }
		   printf("\n");
	   }
	   for(int i=1;i<=num;i++)
		   for(int j=1;j<=num;j++)
		   {   
			   if(flag==0){
			            if(data[i][j]==1)
			                {    
						  // data[i][j]=0;
						   point[tou].x=i;
						   point[tou].pre=-1;
						   /*point[wei].x=j;
						   point[wei++].pre=tou;*/
						   bfs();
			                }
			               }
		   }
	
}

 

找环 存在问题