例题11.8Legal or Not

//很基础的拓扑排序题:判断是否是有环图
#include <iostream>
#include <queue>
#include <cstring>
#include <algorithm>

using namespace std;

vector<int> graph[101];
int indegree[101];

int TuoPu(int n)
{
queue<int> q;
for(int i=0;i<n;i++)
{
if(indegree[i]==0)q.push(i);
}

int ans=0;
while(!q.empty())
{
int u=q.front();
q.pop();
ans++;
for(int i=0;i<graph[u].size();i++)
{
int v=graph[u][i];
indegree[v]--;
if(indegree[v]==0)q.push(v);
}

}
return ans;
}

int main()
{

int n,m;
while(cin>>n)
{
if(n==0)break;
cin>>m;
memset(indegree,0,sizeof(indegree));
memset(graph,0,sizeof(graph));

for(int i=1;i<=m;i++)
{
int f,t;cin>>f>>t;
graph[f].push_back(t);
indegree[t]++;
}

int ans=TuoPu(n);
if(ans==0)cout<<&quot;NO&quot;<<endl;
else cout<<&quot;YES&quot;<<endl;
}
}
全部评论

相关推荐

在开会的单身狗很有一套:学院本被想着这么快有面试,而且简历废话太多了 那些在校经历什么荣誉什么的企业不关心
点赞 评论 收藏
分享
05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务