本文主要是介绍10305 - Ordering Tasks (UVA),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接如下:
Online Judge
有一个非常刁钻的卡点,第16行要是在&& n后面加上 && m的话,就会WA...因为m可以为0.
我的代码如下:
#include <cstdio>
#include <vector>
#include <algorithm>
#include <set>
const int maxx = 101;
// #define debugint n, m, u, v;
int prev[maxx];int main(){#ifdef debugfreopen("0.txt", "r", stdin);freopen("1.txt", "w", stdout);#endifwhile (scanf("%d %d", &n, &m) == 2 && n){std::fill(prev, prev + n + 1, 0);std::vector<std::set<int>> vec(n + 1);std::vector<int> ans;for (int i = 0; i < m; ++i){scanf("%d %d", &u, &v);if (!vec[u].count(v)){vec[u].insert(v);prev[v]++;}}do {for (int i = 1; i <= n; ++i){if (!prev[i]){ans.push_back(i);prev[i]--;for (auto it = vec[i].begin(); it != vec[i].end(); ++it){prev[*it]--;}}}} while (ans.size() < n);for (int i = 0; i < n; ++i){printf("%d%s", ans[i], i == n - 1 ? "\n" : " ");}}#ifdef debugfclose(stdin);fclose(stdout);#endifreturn 0;
}
这篇关于10305 - Ordering Tasks (UVA)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!