Beehives
来源:互联网 发布:卖家淘宝客怎么查询 编辑:程序博客网 时间:2024/05/16 12:09
Beehives
.
.
题意:给出一个无向图,求最短的环
.
.
解法:由于点数只有500, 对于每一个点做一次bfs就好了,只要搜到之前更新过的点那么就是一个环了,bfs保证了最短。
.
.
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <vector>#include <algorithm>#include <string.h>using namespace std;const int maxn = 600;const int INF = 1000000;const int maxm = 21000;int dist[maxn], n, m, d[maxn], x, y, ans, pre[maxn];int tar[2*maxm], nextt[2*maxm], last[maxn], tot;template <typename T>inline bool scan_d(T &ret) { char c; int sgn; if (c = getchar(), c == EOF) return 0; while (c != '-' && (c < '0' || c > '9')) c = getchar(); sgn = (c == '-')?-1:1; ret = (c == '-')?0:(c-'0'); while (c = getchar(), c >= '0' && c <= '9') ret = ret*10+(c-'0'); ret *= sgn; return 1;}void insert(int x, int y) { tot++; tar[tot] = y; nextt[tot] = last[x]; last[x] = tot;}int bfs(int s) { memset(dist, 255, sizeof(dist)); memset(pre, 0, sizeof(pre)); dist[s] = 0; int i = 0, j = 1; d[1] = s; int minn = INF; while (i != j) { i++; if (i > INF) i = 1; int k = last[d[i]]; while (k != 0) { if (dist[tar[k]] == -1) { dist[tar[k]] = dist[d[i]]+1; pre[tar[k]] = d[i]; j++; if (j > INF) j = 1; d[j] = tar[k]; } else if (tar[k] != pre[d[i]]) { minn = min(minn, dist[tar[k]]+dist[d[i]]+1); } k = nextt[k]; } } return minn;}int main() { int tt; scanf("%d", &tt); for (int cases = 1; cases <= tt; cases++) { tot = 0; memset(last, 0, sizeof(last)); scanf("%d %d", &n, &m); for (int i = 1; i <= m; i++) { scan_d(x); scan_d(y); x++; y++; insert(x, y); insert(y, x); } ans = INF; for (int i = 1; i <= n; i++) { ans = min(ans, bfs(i)); } printf("Case %d: ", cases); if (ans == INF) printf("impossible\n"); else printf("%d\n", ans); }}
0 0
- Beehives
- UVA 12544 Beehives
- uva 12544 Beehives
- POJ 1957 Beehives 模拟
- UVAlive 6151 Beehives 解题报告
- Regionals 2012, Europe - Southwestern A.Beehives(BFS求无向图最小环)
- Uva 12544 - Beehives 找无向图的最小环..BFS..
- 安卓拨打电话实例
- PhpStorm 使用技巧
- 简单的方法 使用
- iOS开发之duplicate symbols for architecture x86_64错误
- 阅读郭林《第一行代码》的笔记——第6章 数据存储全方案,详解持久化技术
- Beehives
- Cygwin下vim的配置
- 关于最小生成树的Prim算法和Kruskal算法
- Android开发艺术探索(十二)
- Intellij IDEA 快捷键整理(TonyCody)
- 实验楼Linux学习笔记(一)之基本概念及操作
- ubuntu16.04安装N卡驱动,cuda toolkit7.5,opencv 2.4.13 with module gpu
- 新的征程
- JDBC应用流程