Ordering Tasks

Posted mch5201314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ordering Tasks相关的知识,希望对你有一定的参考价值。

链接

[https://vjudge.net/contest/281085#problem/D]

题意

有n个任务,有M个对先后顺序
然你输出最后的完成任务的顺序,有多种可能输出一种即可

分析

裸的拓扑排序,需要队列和vector

代码

#include<iostream>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
int n,m,a,b;
int in[110]; 
int main(){
    //freopen("in.txt","r",stdin);
    while(cin>>n>>m&&(n+m)){
        vector<int> v1[110];
        memset(in,0,sizeof(in));
        for(int i=1;i<=m;i++)
        {
            cin>>a>>b;
            v1[a].push_back(b);
            in[b]++;
        }
        queue<int> q;
        vector<int> v2;
        
        for(int i=1;i<=n;i++)
        if(in[i]==0) q.push(i);
        //cout<<q.size()<<endl;
        while(!q.empty()){
            int p=q.front();
              q.pop();
            v2.push_back(p);
            for(int i=0;i<v1[p].size();i++){
                in[v1[p][i]]--;
                if(in[v1[p][i]]==0)
                q.push(v1[p][i]);
            }
        }
        for(int i=0;i<v2.size();i++)
        cout<<v2[i]<<‘ ‘;
        cout<<endl; 
    }
    return 0;
} 

以上是关于Ordering Tasks的主要内容,如果未能解决你的问题,请参考以下文章

在这个 spark 代码片段中 ordering.by 是啥意思?

[SOJ] Ordering Tasks

Ordering Tasks 拓扑排序

[拓扑排序]Ordering Tasks UVA - 10305

UVa 10305 - Ordering Tasks (拓扑排序裸题)

D - Ordering Tasks (拓扑排序)