Uva-12118 Inspector's Dilemma
来源:互联网 发布:淘宝下单不付钱 编辑:程序博客网 时间:2024/06/06 04:41
题目链接:Inspector’s Dilemma
题目大意:有完全图,给出E条必经的边,起点终点任选,经过每条边的代价一样,求最小代价。
解题思路:这道题可以转化成添加最少的边使最后的路径成为欧拉道路的问题,对于每个连通分量,如果奇度点大于2个则需要加边,两个连通分量之间也需要加边,求联通分量里点集的度数既可以用DFS也可以用BFS。
代码如下:
#include <set>#include <stack>#include <queue>#include <cstdio>#include <vector>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <algorithm>#define CLR(x) memset(x, 0, sizeof x)using namespace std;typedef long long ll;typedef pair<int, int> P;const int inf = 0x3f3f3f3f;const int maxn = 2e4 + 15;int n, m, w;vector<int> G[1005];int d[1005], vis[1005];int final[1005];void BFS(int s){ CLR(final); queue<int> que; que.push(s); vis[s] = 1; final[s] = 1; while(!que.empty()){ int u = que.front(); que.pop(); vis[u] = 1; for(int v : G[u]){ if(!vis[v]){ if(!final[v]){ que.push(v); final[v] = 1; } d[u]++; d[v]++; } } } return;}int main(){#ifdef LOCAL freopen("in.txt", "r", stdin);#endif ios::sync_with_stdio(false); int u, v, kase = 1; while(cin >> n >> m >> w){ if(!n && !m && !w) break; for(int i = 1; i <= n; i++) G[i].clear(); CLR(vis); int ans = 0; set<int> point; for(int i = 1; i <= m; i++){ cin >> u >> v; point.insert(u); point.insert(v); G[u].push_back(v); G[v].push_back(u); ans++; } for(int e : point){ if(vis[e]) continue; ans++; CLR(d); BFS(e); int deg = 0; for(int j = 1; j <= n; j++){ if(d[j] & 1) deg++; } if(deg >= 2) deg -= 2; ans += deg / 2; } if(ans) ans--; cout << "Case " << kase << ": " << ans * w << endl; kase++; } return 0;}
0 0
- UVa 12118 Inspector's Dilemma
- uva 12118 Inspector's Dilemma
- Uva-12118 Inspector's Dilemma
- UVa 12118 Inspector's Dilemma
- Inspector's Dilemma UVA
- Inspector's Dilemma UVA
- UVA 12118(p181)----Inspector's Dilemma
- 12118 - Inspector's Dilemma
- 12118 - Inspector's Dilemma
- UVa 12118 - Inspector's Dilemma <欧拉道路+DFS>
- UVa 12118 Inspector's Dilemma (欧拉道路)
- bnu Inspector's Dilemma
- UVa12118:Inspector's Dilemma
- UVa 12118 - Inspector's Dilemma(DFS判连通+欧拉回路)
- 习题 6-14 UVA - 12118 Inspector's Dilemma 检察员的难题 (DFS 构造欧拉通路)
- Uva12118——Inspector's Dilemma
- 习题6-14 检查员的难题(Inspector's Dilemma, ACM/ICPC Dhaka 2007, UVa12118)
- UVa Problem Solution: 701 - The Archaeologist's Dilemma
- sql优化
- CD4541B定时器的使用方法
- 学习笔记
- 多线程的实现方式和安全性
- PE-43(枚举)
- Uva-12118 Inspector's Dilemma
- uLua bug fix
- rmzanqkw
- 分布式集群管理—认知
- 初步13-坐标转换
- Debian (Jessie 8.0) mysql can't connect to local mysql server through socket '/var/run/mysqld/mysqld
- HDU3461_Code Lock
- 黑马程序员 使用final修饰一个变量时,是引用不能变还是引用对象不能变
- Uva-536 Tree Recovery