HDU 1285 确定比赛名次 (拓扑排序)
来源:互联网 发布:如何开淘宝店详细步骤 编辑:程序博客网 时间:2024/06/05 10:13
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105916#problem/F
代码:
#include<stdio.h>#include<string.h>using namespace std;int degree[505],res[505];bool maps[505][505];int n,m;void topo(){ int p; for(int i=1;i<=n;i++) { p=-1; for(int j=1;j<=n;j++) { if(degree[j]==0) { degree[j]--; res[i]=p=j; break; } } for(int j=1;j<=n;j++) { if(maps[p][j]==true) { maps[p][j]=false; degree[j]--; } } }}void output(){ for(int i=1;i<n;i++) { printf("%d ",res[i]); } printf("%d\n",res[n]);}int main(){ int i,x,y; while(~scanf("%d %d",&n,&m)) { memset(maps,false,sizeof(maps)); memset(degree,0,sizeof(degree)); memset(res,0,sizeof(res)); for(int i=1;i<=m;i++) { scanf("%d%d",&x,&y); if(maps[x][y]==false) { maps[x][y]=true; degree[y]++; } } topo(); output(); }}
对 有向不成环 的图 排成 按规律排成线性。
思路:
输入图,每次对图的出度++,for(i->n)找每个答案;
找出度为0的,在找这种情况下的 x ,每次对存在第一个坐标x的度--;
找到排序。
网上说这是非常简单的拓扑排序。一般的都用邻接表来存。
在多做做题。
0 0
- 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 确定比赛名次
- Hdu 1285 确定比赛名次,拓扑排序
- hdu 1285 确定比赛名次(拓扑排序)
- hdu 1285 确定比赛名次(拓扑排序)
- full paper、short paper、poster;transaction、Conference、Workshop
- 学习小结(第七章继承)
- 解决selenium报错Element is not clickable at point...
- hdu 2602 Bone Collector 基础01背包
- android面试
- HDU 1285 确定比赛名次 (拓扑排序)
- 2016阿里巴巴测试开发实习笔试题
- 给Button添加边框
- HDU 1808(鸽巢原理)
- Android Volley完全解析(一),初识Volley的基本用法
- C#线程同步的几种方法
- Simpliciti协议栈移植笔记一
- JVM调优总结(这个总结得比较全面)
- 内存管理