Hdu 1285 确定比赛名次
2013-04-22 20:39
330 查看
题目链接0.0
确定比赛名次
[align=left]Problem Description[/align]
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。
[align=left]Input[/align]
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。
[align=left]Output[/align]
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
[align=left]Sample Input[/align]
4 3
1 2
2 3
4 3
[align=left]Sample Output[/align]
1 2 4 3
解体思路:topo排序
确定比赛名次
[align=left]Problem Description[/align]
有N个比赛队(1<=N<=500),编号依次为1,2,3,。。。。,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前。现在请你编程序确定排名。
[align=left]Input[/align]
输入有若干组,每组中的第一行为二个数N(1<=N<=500),M;其中N表示队伍的个数,M表示接着有M行的输入数据。接下来的M行数据中,每行也有两个整数P1,P2表示即P1队赢了P2队。
[align=left]Output[/align]
给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
[align=left]Sample Input[/align]
4 3
1 2
2 3
4 3
[align=left]Sample Output[/align]
1 2 4 3
解体思路:topo排序
#include<cstdio> #include<vector> #include<queue> using namespace std; const int MAXN=1000; struct cmp{ bool operator()(int x,int y) { return x>y; } }; vector<int> map[MAXN]; priority_queue<int,vector<int>,cmp> que; int cnt[MAXN]; int main() { int N,M; int i,j; int p1,p2,tmp,count,a; while(scanf("%d%d",&N,&M)==2) { for(i=1;i<=N;i++) { map[i].clear(); cnt[i]=0; } while(!que.empty()) que.pop(); for(i=1;i<=M;i++) { scanf("%d%d",&p1,&p2); map[p1].push_back(p2); cnt[p2]++; } for(i=1;i<=N;i++) { if(!cnt[i]) que.push(i); } count=0; while(!que.empty()) { count++; tmp=que.top(); que.pop(); printf("%d",tmp); if(count<N) printf(" "); else printf("\n"); for(i=0;i<map[tmp].size();i++) { a=map[tmp][i]; cnt[a]--; if(cnt[a]==0) que.push(a); } } } return 0; }
相关文章推荐
- hdu 1285 确定比赛名次 (优先队列+拓扑排序)
- HDU 1285-确定比赛名次(裸拓扑||拓扑+前向星)
- HDU_1285_确定比赛名次(拓扑排序)
- HDU 1285 确定比赛名次(拓扑排序)
- [HDU](1285)确定比赛名次 ---拓扑排序+STL优先级队列(图)
- 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