HDU 1285 确定比赛名次 (拓扑排序)
2015-05-14 00:00
316 查看
链接 :
http://acm.hdu.edu.cn/showproblem.php?pid=1285
拓扑排序模板 。
http://acm.hdu.edu.cn/showproblem.php?pid=1285
拓扑排序模板 。
#include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <sstream> #include <cstdio> #include <vector> #include <cmath> #include <queue> #include <stack> #include <set> #include <map> #define lson o<<1, l, m #define rson o<<1|1, m+1, r #define PII pair<int, int> #define ALL(x) x.begin(),x.end() #define mem(a) memset(a,0,sizeof(a)) typedef long long ll; const double pi = acos(-1.0); const int MAX = 0x3f3f3f3f; const ll mod = 1000000007ll; const int N = 250005; using namespace std; struct C { int ne, to; } e ; int n, m; int du[505], he[505]; void add(int id, int x, int y) { e[id].to = y; e[id].ne = he[x]; he[x] = id; } int main() { // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); while(cin >> n >> m) { mem(du); memset(he, -1, sizeof(he)); for(int i = 1; i <= m; i++) { int x, y; scanf("%d%d", &x, &y); du[y]++; add(i, x, y); } int cnt = 0; while(1) { for(int i = 1; i <= n; i++) if(du[i] == 0) { printf("%d", i); cnt++; if(cnt < n) printf(" "); else { puts(""); break; } du[i]--; for(int j = he[i]; j != -1; j = e[j].ne) { du[ e[j].to ]--; } break; } if(cnt == n) break; } } return 0; }
相关文章推荐
- HDU 1285 确定比赛名次 拓扑排序
- hdu 1285 确定比赛名次 (拓扑排序)
- HDU 1285 确定比赛名次 拓扑排序
- HDU 1285 确定比赛名次 拓扑排序
- HDU 1285 确定比赛名次(拓扑排序)
- HDU ~ 1285 ~ 确定比赛名次 (拓扑排序)
- hdu 1285 确定比赛名次 拓扑排序模板题 优先队列
- HDU 1285 确定比赛名次(拓扑排序基础)
- HDU 1285 确定比赛名次 (拓扑排序)
- HDU 1285 确定比赛名次(拓扑排序)
- HDU-#1285 确定比赛名次(拓扑排序)
- HDU 1285 确定比赛名次 拓扑排序
- HDU 1285 确定比赛名次【拓扑排序入门题,链式前向星建图】
- hdu 1285 确定比赛名次(拓扑排序)
- HDU 1285 确定比赛名次 (拓扑排序)
- hdu 1285 确定比赛名次(拓扑排序)
- hdu 1285 确定比赛名次(很典型的拓扑排序)
- hdu 1285 确定比赛名次 拓扑排序
- HDU:1285 确定比赛名次(拓扑排序)
- HDU-1285 确定比赛名次 拓扑排序