hdu5438 连通子图
来源:互联网 发布:网络发展新技术 编辑:程序博客网 时间:2024/05/21 06:11
题目大意:将只有一个管道与其他池塘相连的池塘都去掉,最后剩下的n个联通图中,找有奇数个池塘的连通图中所有池塘的val值和。
思路:将所有单管道池塘去掉 , 然后搜索每一个连通图即可。
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <fstream>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <vector>#include <map>#include <bitset>using namespace std;#define MAXN 10005#define LL long longint n , m;int arr[MAXN];int visit[MAXN];vector <int>V[MAXN];int solve(){ int temp = 0; int num = 0; for(int i = 1 ; i <= n ; i ++) { if(V[i].size() == 1) { temp = V[i][0]; std::vector<int>::iterator iter=std::find(V[temp].begin(),V[temp].end(),i); V[temp].erase(iter); num ++ ; V[i].clear(); } } if(num) return 1; else return 0;}int main(){ int t ; scanf("%d" , &t); while(t--) { scanf("%d %d" , &n , &m); // memset(arr , 0 , sizeof(arr)); memset(visit, 0 , sizeof(visit)); for(int i = 1 ; i <= MAXN ; i ++ ) V[i].clear(); for(int i = 1 ; i <= n ; i ++) { scanf("%d" , &arr[i]); } int a , b; for(int i = 0 ; i < m ; i ++) { scanf("%d %d" , &a, &b); V[a].push_back(b); V[b].push_back(a); } while(solve()) continue; long long sum = 0; for(int i = 1 ; i <= n ; i ++) { int temp = V[i].size(); long long s = 0; int num = 0; if(temp && !visit[i]) { queue <int> Q; Q.push(i); num ++ ; s += arr[i]; visit[i] = 1; while(!Q.empty()) { int t = Q.front(); Q.pop(); int t_num = V[t].size(); for(int j = 0 ; j < t_num ; j ++) { if(!visit[V[t][j]]) { num ++ ; visit[V[t][j]] = 1; Q.push(V[t][j]); s += arr[V[t][j]]; } } } } if(num % 2) sum += s; } printf("%lld\n" , sum); } return 0;}
0 0
- hdu5438 连通子图
- 极大连通子图 + 极小连通子图 + 连通分量
- 强连通子图
- 极大连通子图与极小连通子图
- 极大连通子图和极小连通子图
- ccf 高速公路(连通子图)
- ccf 高速公路(连通子图)
- 【连通分量】BZOJ 1093: [ZJOI2007]最大半连通子图
- 基本图算法:强连通子图
- 图 求强连通分支子图
- 无向图的连通子图
- 一个图的连通子图个数
- [bzoj1093][ZJOI2007]最大半连通子图
- 1093: [ZJOI2007]最大半连通子图
- bzoj1093【ZJOI2007】最大半连通子图
- [BZOJ1093][ZJOI2007]最大半连通子图
- 【bzoj1093】 [ZJOI2007]最大半连通子图
- 1093: [ZJOI2007]最大半连通子图
- wpf探秘之B哥Dispatcher私房菜(1)
- Android:TextView超出部分自动添加省略号
- paypal nvp name value paire paypal ecshop sanbox测试账号
- 【Window下apache服务设置最大连接数】
- ORA-01654 错误
- hdu5438 连通子图
- 黑马程序员---浅析 宏
- HDU1754 I 单点更新,区间最值
- php 计算3公里内所以用户的距离
- 19C指针详解(经典,非常详细)
- HDU1394 求逆序数
- 利用辗转相除法计算最大公约数与最小公倍数
- Xcode 7.0正式版发布了
- [C#/ASP.NET]List<>中Sort()、Find()、FindAll()、Exist()的使用方法