HDU-2647-邻接表模板
来源:互联网 发布:php date 格式化输出 编辑:程序博客网 时间:2024/05/24 22:42
#include<iostream>#include<cstring>#include<queue>#include<cstdio>using namespace std;#define MAX 10005int n, sum, ans;int into[MAX], head[MAX], money[MAX];struct Reward{ int to; int next;} edge[2 * MAX];void addEdge(int u, int v, int tot){ edge[tot].to = v; edge[tot].next = head[u];//上一条以u为起点的边的编号 head[u] = tot;//当前以u为起点的边的位置 into[v]++;//记录入度}void Init(){ for (int i = 1; i <= n; i++) { head[i] = -1; into[i] = 0; money[i] = 888; } sum = ans = 0;}void topu(){ int i, j, l, v; queue<int>Q; for (i = 1; i <= n; i++) if (into[i] == 0) Q.push(i); while (!Q.empty()) { v = Q.front(); sum += money[v]; Q.pop(); ans++; for (l = head[v]; l != -1; l = edge[l].next) //与队首元素v有关的都枚举一遍,循环遍历 { if (--into[edge[l].to] == 0) { Q.push(edge[l].to); money[edge[l].to] = money[v] + 1; } } }}int main(){ int m, a, b; while (scanf("%d%d", &n, &m) != EOF) { Init(); for (int i = 0; i < m; i++) { scanf("%d%d", &a, &b); addEdge(b, a, i); } topu(); if (ans != n) sum = -1; cout << sum << endl; } return 0;}
0 0
- HDU-2647-邻接表模板
- HDU 2544 最短路 SPFA 邻接表 模板
- HDU 1874 (迪杰斯特拉 + 邻接表 + 优先队列 模板)
- EK(邻接表)模板
- dinic(邻接表)模板
- sap(邻接表)模板
- 邻接表模板
- ISAP模板 邻接表
- 数据结构---邻接表(模板)
- [模板]spfa+邻接表
- 邻接表构建模板
- 邻接表模板
- 邻接表模板
- 邻接表(模板)
- 模板-邻接表
- HDU 2647( 拓扑+邻接表)
- SPFA + 静态邻接表 模板
- POJ3275 FLOYD邻接表 [模板]
- 关于Android中的四大组件(Activity)
- 线段树 hdu3265 Posters
- C语言中的数组名
- Python学习笔记2
- RxJava系列之一 初识Rxjava
- HDU-2647-邻接表模板
- 协同activity
- unable to find vcvarsall.bat的解决方法
- mysql show grants查看权限
- HDOJ 5375 Gray code DP
- 8月11日的学习内容
- LeetCode(199)Binary Tree Right Side View
- linux下scp 、ssh非22端口的服务器操作
- O-C-11-利用类方法做一个简单的计算器