UVa 12118 Inspector's Dilemma (欧拉道路)
来源:互联网 发布:原生js实现todo list 编辑:程序博客网 时间:2024/06/06 07:32
题目链接:https://cn.vjudge.net/problem/UVA-12118
大意:给出一个V结点的图,每两点之间都有一条双向道路相连,长度为T。现要找一条最短的道路,使得该道路经过E条指定的边。
思路:本题可以转化为,已知E条边,现要增加尽量少的边,使它们和这E条边组成欧拉通(回)路。因为图不一定连通,所以要想满足要求,每个连通块都要设法将其变成欧拉通(回)路,具体做法是这样的:统计连通块中度数为奇数的结点的个数cnt(这个个数一定为偶数),若为0,则证明这是一个欧拉回路,已经满足要求,否则,将其变为欧拉道路,即只允许有两个点度数为奇数,所以要加入(cnt-2)/ 2条边(即每两个奇度数结点连一条边,最后留下两个奇度数结点)。对于不同的连通块,只需用一条边将他们连起来即可。
#include<cstdio>#include<cstring>#include<string>#include<cctype>#include<iostream>#include<set>#include<map>#include<cmath>#include<sstream>#include<vector>#include<stack>#include<queue>#include<algorithm>#define fin(a) freopen("a.txt","r",stdin)#define fout(a) freopen("a.txt","w",stdout)typedef long long LL;using namespace std;typedef pair<int, int> P;const int dx[] = {0, 0, 0, -1, 1};const int dy[] = {0, -1, 1, 0, 0};const int INF = 1e8 + 10;const int maxn = 1e3 + 10;vector<int> G[maxn];int vis[maxn];int n, m, t;int dfs(int u) { vis[u] = 1; int cnt = (G[u].size() & 1); for(int i = 0; i < G[u].size(); i++) { int v = G[u][i]; if(!vis[v]) cnt += dfs(v); } return cnt;}int main() { int kase = 0; while(scanf("%d%d%d", &n, &m, &t) && n) { memset(vis, 0, sizeof vis); for(int i = 1; i <= n; i++) G[i].clear(); for(int i = 0; i < m; i++) { int x, y; scanf("%d%d", &x, &y); G[x].push_back(y); G[y].push_back(x); } int ans = 0; for(int i = 1; i <= n; i++) if(!vis[i] && G[i].size()) { int cnt = dfs(i); ans += max(0, (cnt-2)/2); ++ans; //不同连通块连边 } if(ans > 0)ans--; //因为多加了一个,所以要减一 printf("Case %d: %d\n", ++kase, (ans + m) * t); } return 0;}
阅读全文
0 0
- UVa 12118 - Inspector's Dilemma <欧拉道路+DFS>
- UVa 12118 Inspector's Dilemma (欧拉道路)
- UVa 12118 Inspector's Dilemma
- uva 12118 Inspector's Dilemma
- Uva-12118 Inspector's Dilemma
- UVa 12118 Inspector's Dilemma
- UVa 12118 - Inspector's Dilemma(DFS判连通+欧拉回路)
- Inspector's Dilemma UVA
- Inspector's Dilemma UVA
- UVA 12118(p181)----Inspector's Dilemma
- 习题 6-14 UVA - 12118 Inspector's Dilemma 检察员的难题 (DFS 构造欧拉通路)
- 12118 - Inspector's Dilemma
- 12118 - Inspector's Dilemma
- bnu Inspector's Dilemma
- UVa12118:Inspector's Dilemma
- Uva12118——Inspector's Dilemma
- UVA 10441 - Catenyms(欧拉道路)
- 习题6-14 检查员的难题(Inspector's Dilemma, ACM/ICPC Dhaka 2007, UVa12118)
- HDU 2141 Can you find it?
- 什么是spring
- 暑期集训之ZOJ
- 判断输入框中输入的是否是数字
- 每日英语阅读(十八)
- UVa 12118 Inspector's Dilemma (欧拉道路)
- spring学习之自动装配
- Spring AOP
- ajax回调函数动态加载的标签里面js事件不执行
- 剑指offer:跳台阶
- CSU
- ASP.NET中的富文本编辑控件(html文本编辑控件)整理
- Unity 从Apex学到的一种提高模块扩展性的方法
- 初步接触HTML5