HDU 1285 确定比赛名次
2012-08-02 18:23
239 查看
拓扑排序。
(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它.
(2)从网中删去该顶点,并且删去从该顶点发出的全部有向边.
(3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止.
代码如下:
(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它.
(2)从网中删去该顶点,并且删去从该顶点发出的全部有向边.
(3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止.
代码如下:
#include<iostream> #include<cstring> using namespace std; int main() { int i, j, k, n, m, a, b; int dgr[501], map[501][501]; //dgr[]存放节点的入度 while(cin >> n >> m) { memset(dgr, 0, sizeof(dgr)); memset(map, 0, sizeof(map)); for (i=1; i<=m; i++) { cin >> a >> b; if (map[a][b] == 0) //重复 不计 { map[a][b]=1; dgr[b]++; } } for (i=1; i<=n; i++) //n次查找 for (j=1; j<=n; j++) if (dgr[j] == 0) //寻找入度为0的结点,并将其删除 { dgr[j]=-1; cout << j; if (i == n) cout << endl; else cout << " "; for (k=1; k<=n; k++) //更新以它为前驱结点的入度 if (map[j][k] == 1) dgr[k]--; break; } } return 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 确定比赛名次
- HDU 1285 确定比赛名次
- 确定比赛名次,hdu 1285 最简单的拓扑排序,