例题11.9确定比赛名次

/*
只需要把拓扑排序里存入度为0的结点的队列改成greater的优先队列
*/

#include<queue>
#include<vector>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;

vector<int> graph[125000];
int indegree[501];

vector<int> TuoPu(int n)
{
priority_queue<int,vector<int>,greater<int>> q;
for(int i=1;i<=n;i++)
{
if(indegree[i]==0)q.push(i);
}
vector<int> ans;
while(!q.empty())
{
int u=q.top();
q.pop();
ans.push_back(u);
for(int i=0;i<graph[u].size();i++)
{
int v=graph[u][i];
indegree[v]--;
if(indegree[v]==0)q.push(v);
}
}

return ans;
}

int main()
{
int n,m;
while(cin>>n>>m)
{
memset(graph,0,sizeof(graph));
memset(indegree,0,sizeof(indegree));
for(int i=1;i<=m;i++)
{
int from,to;
cin>>from>>to;
graph[from].push_back(to);
indegree[to]++;
}
 } 

vector<int> ans=TuoPu(n);
for(int i=0;i<ans.size();i++)
{
 cout<<ans[i]<<&quot; &quot;;
}
cout<<endl;

}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
05-22 12:44
已编辑
门头沟学院 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务