⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1269 迷宫城堡.cpp

📁 威士忌的HDU题解.大概有260多题的源码。对于学习非常有好处。
💻 CPP
字号:
#include <queue>  
#include <vector>  
#include <cstdio>  
using namespace std;  
queue<int> SQ;  
vector< vector<int> > v;  
bool Mark[10010];  
bool cir[10010];
int total;  
bool bCircle;

void dfs(int s)  
{  
    int temp,i;  
      
    if(bCircle)
   		return;
	if(Mark[s])
		return;
    if(cir[s])
    {
    	bCircle=true;
    	return;
    }
   	Mark[s]=true;
  	
	for(i=0;i<v[s].size();i++)
	{
		dfs(v[s][i]);
	}	
	if(bCircle)
	{
		cir[s]=true;
		SQ.push(s);
		total++;
	}
}

int main()  
{  
    int n,m,s,e,i;    
      
    v.resize(10010); 
    while(scanf("%d %d",&n,&m)==2 )  
    {  
    	if(n==0 && m==0)
    		break;
    	for(i=0;i<10010;i++)
    	{
        	v[i].clear();  
    	}   
        memset(Mark,false,sizeof(Mark));
        memset(cir,false,sizeof(cir));
        for(i=0;i<m;i++)  
        {  
            scanf("%d %d",&s,&e);  
            v[s].push_back(e);  
        }  
        for(i=0;i<v[s].size();i++)
        	SQ.push(v[s][i]);
		total=1;  
		cir[s]=true;
		bCircle=false; 
		
 		while(!SQ.empty())
 		{
 			if(total==n)
 				break;
   			s=SQ.front();  
    		dfs(s);  
    		bCircle=false;
    		SQ.pop();
 		}
 		while(!SQ.empty())     
			SQ.pop();
        
        if(total==n)    
            printf("Yes\n");      
        else   
            printf("No\n");    
    }  
    return 0;  
}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -