Uva10305——Ordering Tasks

来源:互联网 发布:网络巫师剧情介绍 编辑:程序博客网 时间:2024/06/05 19:21

简单的拓扑排序,模拟一下就可以了。


AC代码:

#include <iostream>#include <cstring>#include <vector>using namespace std;const int maxn = 110;int n, m;vector<int> vec[maxn];int ans[maxn];bool cheak(){for(int i = 1; i <= n; i++)if(!ans[i])return true;return false;}int main(){//freopen("3.txt", "r", stdin);int i, j;while(cin >> n >> m){if(n == 0 && m == 0)break;memset(ans, 0, sizeof(ans));for(i = 1; i <= n; i++){vec[i].clear();vec[i].push_back(0);}while(m--){cin >> i >> j;vec[i].push_back(j);vec[j][0]++;}int num[maxn], t = 0;while(cheak()){bool flag = true;for(i = 1; i <= n; i++)if(!ans[i] && vec[i][0] == 0){flag = false;for(j = 1; j < vec[i].size(); j++)vec[vec[i][j]][0]--;ans[i] = 1;num[t++] = i;}if(flag)break;}for(i = 0; i < t; i++)i == t - 1 ? cout << num[i] << endl : cout << num[i] << ' ';}return 0;}


0 0
原创粉丝点击