HDU Caocao's Bridges
来源:互联网 发布:淘宝网店怎么装修视频 编辑:程序博客网 时间:2024/05/22 13:36
题意挺简单的但是有好多细节要处理好,就是让求所有割边最小权值
1)自环
2)如果地图根本不是一个联通图那么我们根本不需要炸,答案就是0
3)如果路上的侍卫是0,那么我们至少需要一个人去被炸, 此时答案是1
4)其他情况就正常来就行,求割边
#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>using namespace std;#define MAXN 3005#define MAXE 3000005#define INF 1000000007struct Edge{ int u, v, next, val;}e[MAXE];int head[MAXE], cnt, ans;int dfn[MAXN], low[MAXN], fa[MAXN], dep;bool bri[MAXE];void init(){ memset(head, -1, sizeof(head)); memset(fa, -1, sizeof(fa)); memset(dfn, 0, sizeof(dfn)); memset(bri, 0, sizeof(bri)); dep = 0, cnt = 0; ans = INF;}void Addedge(int uu, int vv, int w){ e[cnt].u = uu, e[cnt].v = vv, e[cnt].val = w; e[cnt].next = head[uu], head[uu] = cnt++;}int findfa(int x){ if(fa[x] == -1) return x; return fa[x] = findfa(fa[x]);}void unit(int x, int y){ int fax = findfa(x); int fay = findfa(y); if(fax != fay) fa[fax] = fay;}void dfs( int u, int pre){ dfn[u] = low[u] = ++dep; //cout<<"u"<<" "<<u<<endl; for(int i = head[u]; i != -1; i = e[i].next) { int v = e[i].v; if(i == (pre^1)) continue; if(!dfn[v]) { dfs(v, i); low[u] = min(low[u], low[v]); if(low[v] > dfn[u]) ans = min(ans, e[i].val); } else low[u] = min(low[u], dfn[v]); }}void solve( int n, int m){ dfs(1, -1); if(ans == INF) printf("-1\n"); else printf("%d\n",ans);}int main(){ int n, m, val, u, v; while(scanf("%d %d",&n, &m) != EOF &&(n + m)) { init(); for( int i = 0; i < m; i++) { scanf("%d %d %d",&u, &v, &val); if( u == v) continue; if(!val) val = 1; Addedge(u, v, val); Addedge(v, u, val); unit(u, v); } int i; for( i = 2; i <= n; i++) { if(findfa(i) != findfa(1)) break; } if(i <= n) printf("0\n"); else solve(n, m); }}
0 0
- HDU Caocao's Bridges
- Caocao's Bridges HDU
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- hdu 4738 Caocao's Bridges
- HDU:4738 Caocao's Bridges
- HDU 4738 Caocao's Bridges
- HDU 4738 Caocao's Bridges
- hdu 4738 - Caocao's Bridges
- hdu 4738 Caocao's Bridges
- HDU-4738Caocao's Bridges
- hdu 4738—— Caocao's Bridges
- hdu - 4738 Caocao's Bridges 割边
- HDU 4738 Caocao's Bridges(找割边)
- hdu 4738——Caocao's Bridges
- HDU 4738 Caocao's Bridges(tarjan算法)
- HDU - 4738 Caocao's Bridges(桥)
- hdu 4738 Caocao's Bridges 有重边求割边模板
- c语言3月17日学习总结
- jquery mobile 页面缓存 导致事件无法触发
- 完全卸载mysql数据库图文教程
- 三层交换机和路由器的主要区别
- fuseki在windows的简单配置
- HDU Caocao's Bridges
- fine_short_path
- 关于利用live555,RTSP取流
- 94.Binary Tree Inorder Traversal
- MySQL 5.7 Fabric: any good?
- 解决eclipse中org.w3c.dom.Node类老报The method getTextContent() is undefined 问题
- 数据库的设计原则
- 【leetcode】 Maximum Gap
- 黑马程序员--OC-内存