oj--9度oj---题目1448:Legal or Not

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oj--9度oj---题目1448:Legal or Not相关的知识,希望对你有一定的参考价值。

几个注意点:记得加

using namespace std;
有时候本地不加,还是能跑。提交时候忘加了会CE.
Q存放的是度为0的点。
可新建队列保存结果。
#include<cstdio>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>list[500];
int indegree[500];
queue<int> Q;
queue<int> res;
int main(){
    int n,m;
    while(scanf("%d %d",&n,&m)!=EOF){
    if(n==0&&m==0) break;
    fill(indegree,indegree+n,0);
    for(int i=0;i<=n-1;i++) list[i].clear();
    int u,v;
    for(int i=0;i<m;i++){
        scanf("%d %d",&u,&v);
        indegree[v]++;
        list[u].push_back(v);
    }
    while(!Q.empty()){Q.pop();}
    for(int i=0;i<=n-1;i++){
        if(indegree[i]==0){
            Q.push(i);
        }
    }
    //Q存放度为0的点
    int cnt=0;
    while(!res.empty()){res.pop();}
    while(!Q.empty()){
        int firstp=Q.front();
        res.push(firstp);
        cnt++;
        Q.pop();
        for(int i=0;i<list[firstp].size();i++){
            indegree[list[firstp][i]]--;
            if(indegree[list[firstp][i]]==0){
                Q.push(list[firstp][i]);
            }
        }
    } 
        if(cnt==n)  puts("YES"); //DAG
    
        else puts("NO");
    }
    return 0;
}

 

以上是关于oj--9度oj---题目1448:Legal or Not的主要内容,如果未能解决你的问题,请参考以下文章

[小米OJ] 9. 移除 K 位得到最小值

第十二周oj题目将度分秒转换为弧度

第十二周oj题目将度分秒转换为弧度

华为OJ 名字美丽度

华为OJ083-计算字符串的相似度

九度OJ-题目1009:二叉搜索树