九度OJ 1449 确定比赛名次
2014-02-21 14:52
288 查看
题目描述:
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。
输入:
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。
输出:
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
样例输入:
样例输出:
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。
输入:
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。
输出:
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
样例输入:
4 3 1 2 2 3 4 3
样例输出:
1 2 4 3
#include <stdio.h> #include <vector> #include <queue> using namespace std; vector<int> edge[501]; queue<int> Q; int indegree[501]; bool mark[501]; int main() { //freopen("1449in.txt","r",stdin); int N, M; while(scanf("%d%d",&N,&M) != EOF) { int i; for(i = 0; i < 501; i++) { edge[i].clear(); indegree[i] = 0; mark[i] = false; } for(i = 0; i < M; i++) { int a, b; scanf("%d%d",&a,&b); indegree[b]++; edge[a].push_back(b); } while(!Q.empty()) Q.pop(); for(i = 1; i <= N; i++) if(indegree[i] == 0) { Q.push(i); break; // 此break实现“符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前” } bool first = true; while(!Q.empty()) { int tmp = Q.front(); if(first == true) { printf("%d",tmp); first = false; } else printf(" %d",tmp); mark[tmp] = true; Q.pop(); for(i = 0; i < edge[tmp].size(); i++) { indegree[edge[tmp][i]]--; } for(i = 1; i <= N; i++) if(indegree[i] == 0 && mark[i] == false) { Q.push(i); break; // 此break实现“符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前” } } printf("\n"); } return 0; }
相关文章推荐
- 九度OJ-1449:确定比赛名次
- 九度题目1449:确定比赛名次
- 九度 题目1449:确定比赛名次
- 九度 题目1449:确定比赛名次
- 九度 题目1449:确定比赛名次
- 九度1449:确定比赛名次(拓扑排序)
- 九度 题目1449:确定比赛名次
- 九度题目1449:确定比赛名次
- 题目1449:确定比赛名次
- 题目1449:确定比赛名次
- 题目1449:确定比赛名次
- Jobdu 题目1449:确定比赛名次
- 题目1449:确定比赛名次(拓扑排序问题)
- 题目1449:确定比赛名次
- 【hdu - 1285 确定比赛名次】
- HDU 1285确定比赛名次(拓补排序)
- hdu 1285 确定比赛名次——拓扑排序
- 确定比赛名次,hdu 1285 最简单的拓扑排序,
- HDU 1285 拓扑排序 确定比赛名次
- 确定比赛名次top_sort