码迷,mamicode.com
首页 > 编程语言 > 详细

拓扑排序

时间:2020-05-15 17:39:42      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:拓扑   back   span   const   size   else   col   邻接   bsp   

问题1.判断有没有环

http://hihocoder.com/problemset/problem/1174

用vector模拟邻接表,开一个记录入度的一维数组,一个存储入度为0的队列

ac代码如下

#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<string.h>
using namespace std;
typedef long long int ll;
int n,k,a,b,t,m;
const int maxn=1e5+5;
vector<int>v[maxn];
queue<int>q;
int indge[maxn];
bool judge()
{
    int num=0;
    while(!q.empty())q.pop();
    for(int i=1;i<=n;i++){
        if(!indge[i])q.push(i);
    }
    while(!q.empty()){
        int tot=q.front();
        q.pop();
        num++;
        for(int i=0;i<v[tot].size();i++){
            if(--indge[v[tot][i]]==0)q.push(v[tot][i]);
        }
    }
    if(num==n)return true;
    else return false;
}
int main()
{
    cin>>t;
    for(int i=1;i<=t;i++){
        cin>>n>>m;
        for(int i=0;i<maxn;i++)v[i].clear();
        memset(indge,0,sizeof(indge));
        for(int j=0;j<m;j++){
            cin>>a>>b;
            v[a].push_back(b);
            indge[b]++;
        }
        if(judge())puts("Correct");
        else puts("Wrong");
    }
    return 0;
}
/*
2
2 2
1 2
2 1
3 2
1 2
1 3
*/

 

拓扑排序

标签:拓扑   back   span   const   size   else   col   邻接   bsp   

原文地址:https://www.cnblogs.com/mohari/p/12895925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!