HDU 1285:确定比赛名次(拓扑排序)
确定比赛名次
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 34040 Accepted Submission(s): 13351
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
思路:把给出的每组数据a,b按照<a,b>组成一个有向无环图,对这个图的顶点进行拓扑排序。
将样例改成有向无环图
然后找到入度为0的点:1,4 。因为要编号小的队伍在前,所以先删去点1和与1相关的边,并输出点1
删去后如图:
就这样一直按递增顺序删去入度为0的点并输出,直至最后无相连的点。
最后可得到按顺序输出的点1-->2-->4-->3
详解传送门
AC代码
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#define ll long long
#define INF 0x3f3f3f3f
const int maxn=1e3+10;
int p[maxn][maxn],vis[maxn];//p记录两点是否相连,vis记录点的入度
int n,m;
void toposort()
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(!vis[j])//如果入度为0(没有前驱点){vis[j]--;//入度变成-1进行标记(入度为-1的点均为已经删除的点)printf("%d",j);//输出该节点if(i!=n)printf(" ");elseprintf("\n");for(int k=1;k<=n;k++){if(p[j][k])vis[k]--;//将与j相连的节点都删去(删除与j有关的边)}break;}}}
}
int main(int argc, char const *argv[])
{int x,y;while(~scanf("%d%d",&n,&m))//不要忘了是多组输入{memset(p,0,sizeof(p));memset(vis,0,sizeof(vis));for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);//对数据进行处理,如果两点相连,p[x][y]=1,y的入度增加1if(!p[x][y]){p[x][y]=1;vis[y]++;}}toposort();}return 0;
}
转载于:https://www.cnblogs.com/Friends-A/p/9308990.html
HDU 1285:确定比赛名次(拓扑排序)相关推荐
- HDU 1285 确定比赛名次 拓扑排序(邻接矩阵 邻接表
确定比赛名次 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- [ACM] hdu 1285 确定比赛 (拓扑排序)
确定比赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1285 - 确定比赛名次(拓扑排序)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- [ACM] hdu 1285 确定比赛名次 (拓扑排序)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU-1285 确定比赛名次 拓扑排序
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 1285 确定比赛名次
//拓扑排序裸题,题目要求按编号从小到大输出,要换一种思维去思考 //按照数据结构课本的算法,建立邻接表,用栈实现.初始化先将入度为0的顶点入栈,然后以栈顶顶点为准,先将栈顶顶点出栈输出它的信息,然后 ...
- HDU - 128 确定比赛名次(基于有向无环图(GAD)的排序--拓扑排序)
题目链接:https://vjudge.net/contest/325616#problem/A 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N,进行比赛,比赛结束 ...
- HDU 1285--确定比赛名次【拓扑排序 amp;amp; 邻接表实现】
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 拓扑排序杭电 1285确定比赛名次
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- hdoj 1285 确定比赛名次 【拓扑排序】
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
最新文章
- Node.js-提供了四种形式的定时器
- web前端学习day_05:Bootstrap
- mosn 中的context、变量 和 内存复用机制
- c 语言中三个函数,帮忙解释几个C语言中的函数?
- IIS7 经典模式和集成模式的区别分析
- SecureCRT文件传输
- spring webscoket服务端使用记录
- textarea输入中文和数字换行解决方法
- Javascript中对空string调用split返回不是空数组
- Github使用: 本地上传, 与之同步
- 掌握用 STL 中的 SET 动态维护 “各类型凸壳” / “凸包”
- 凯利KAC交流控制器调试方案
- 外贸人写开发信会犯的错误,你中了哪几个
- Spark大数据分与实践笔记(第二章 Spark基础-03)
- python签到脚本_基于Python实现签到脚本过程解析
- miui android系统 流量,小米4 MIUI6系统怎么设置流量功能?小米4 MIUI6流量管理设置?...
- PHP 多行文字内容的重复检测功能并统计重复次数
- 微服务项目之电商--15.后台分页查询及新增品牌业务添加
- 电脑故障一查通 软件教学
- sklearn.metrics 用法详解