码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-06-11 13:40:22      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:==   amp   结果   front   main   tor   div   scanf   bre   

几个注意点:记得加

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

标签:==   amp   结果   front   main   tor   div   scanf   bre   

原文地址:http://www.cnblogs.com/kprac/p/6984838.html

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