2018-5-23

简单的拓扑排序,我用的是优先队列,按照字典序排序,将入度为零的点放入队列,
则直接按照字典序排序。
需要注意的是:如果有两个重复的数据,则相应的入度值就不应该加一了。
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;const int N = 500;
bool f[N+1][N+1];
int res[N+1];
bool is[N+1];
int n,m;struct pm{int b,v;bool operator <(const pm &a) const{return b>a.b;}
}x[N+1];
priority_queue<struct pm>que;void init(){memset(f,false,sizeof(f));memset(is,false,sizeof(is));for (int i=1;i<=n;i++){x[i].v=0;x[i].b=i;}que.empty();
}void show(){for (int i=1;i<n;i++){printf ("%d ",res[i]);}printf ("%d\n",res[n]);
}void toposort(){int p=1;while (!que.empty()){struct pm tmp=que.top();que.pop();res[p++]=tmp.b;for (int i=1;i<=n;i++){if (f[tmp.b][i]){x[i].v--;}}for (int i=1;i<=n;i++){if (!is[i]&&!x[i].v){que.push(x[i]);is[i]=true;}}}show();
}int main(){while (scanf ("%d%d",&n,&m)!=EOF){init();for (int i=0;i<m;i++){int a,b;scanf ("%d%d",&a,&b);if (!f[a][b]) x[b].v++;f[a][b]=true;}for (int i=1;i<=n;i++){if (!x[i].v){que.push(x[i]);is[i]=true;}}toposort();}return 0;
}/*
4 3
1 2
2 3
4 3
*/

HDOJ 1285 确定比赛名次(拓扑排序)相关推荐

  1. HDU 1285 确定比赛名次 拓扑排序(邻接矩阵 邻接表

    确定比赛名次 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description ...

  2. hdoj 1285 确定比赛名次 【拓扑排序】

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. HDOJ -- 1285 确定比赛名次

    确定比赛名次 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description ...

  4. HDU-1285 确定比赛名次 拓扑排序

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)           ...

  5. [ACM] hdu 1285 确定比赛 (拓扑排序)

    确定比赛 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. HDU 1285 - 确定比赛名次(拓扑排序)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  7. [ACM] hdu 1285 确定比赛名次 (拓扑排序)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. 拓扑排序杭电 1285确定比赛名次

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  9. 杭电1285确定比赛名次

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

最新文章

  1. Xamarin Android提示找不到资源属性定义
  2. 主板19针接口_【新品上市】D4双通道还能组RAID!华南B365D4主板6/7/8/9代全兼容!...
  3. nio的epoll和selector实现流程分析
  4. JavaScript中的Date对象在Safari与IOS中的“大坑”
  5. mySql配置在nodejs中使用
  6. 无法在WEB服务器上启动调试,Web 服务器配置不正确 解决
  7. 打造数据中心的软实力
  8. python wrapper_Python functools之partial, update_wrapper, wraps
  9. https无法访问 宝塔_解决宝塔面板开启自带免费Let's Encrypt SSL证书后网站无法访问...
  10. 微信模板消息html,微信推送模板消息,偶发出现报错errcode
  11. 计算机科学与技术民办大学排名,计算机科学与技术专业排名:这95所大学实力很强,包括公办、民办和中外合办院校...
  12. 计算机相关常数,地址常数
  13. 低调的华丽:从服务器开发的角度认识 asp.net 中的回调技术
  14. sklearn中lstm_LSTM
  15. 第一场嵌入式笔试——CVTE嵌入式应用工程师
  16. CSS 为图片 增加边框效果
  17. Java实现生产者消费者案例
  18. 如何寻找软件外包公司?
  19. Vue vue-router中必不可少的redirect,meta和hidden三个属性
  20. 发生系统错误 1219。不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接。

热门文章

  1. 非x面容解锁插件ios13_iOS13.5 Beta3 推送,戴口罩解锁更加方便
  2. 摸鱼也要讲究方法:工作学习中玩手机并不能缓解无聊和疲劳
  3. “不务正业”的化学奖又发给了生物
  4. 亲测有效!解决macOS Big Sur系统Parallels Desktop 16的USB无法使用和无法联网问题
  5. 水晶报表设置二维码_随时随地数据分析?老板喜欢的移动端报表,我用这七步做出来了...
  6. vue.config.js 配置参考
  7. Python工作笔记-仿大佬的list赋值
  8. axios post body参数_vue之axios封装
  9. mongodb java 多条件查询_MongoDB_Java连接mongo 使用Java多条件查询mongo数据
  10. filecoin白皮书_【Filecoin挖矿小知识】在lotus开发网上可以参与Filecoin挖矿吗?