[hdu4738]求桥模板
2024-08-28 12:38:30
oj问题,待修改,存档。
#include<stdio.h>
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
#define maxn 111111
#define inf 11111111
stack<int>s;
int dfn[maxn],low[maxn];
int iscut[maxn];
int cnt,scc,ans,clc;
struct edge{
int to,next,w,id;
}e[maxn*];
int head[maxn];
void add(int u,int v,int w,int id){
e[cnt].to=v;e[cnt].next=head[u];e[cnt].w=w;e[cnt].id=id;
head[u]=cnt++;
}
void init(){
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
memset(head,-,sizeof head);
memset(iscut,,sizeof iscut);
cnt=;scc=,clc=;
}
void dfs(int u,int fa){
low[u]=dfn[u]=++clc;
for(int i=head[u];i!=-;i=e[i].next){
int v=e[i].to;
if(e[i].id==fa)continue;
if(!dfn[v]){
dfs(v,e[i].id);
low[u]=min(low[u],low[v]);
if(low[v]>dfn[u]){
ans=min(ans,e[i].w);
}
}
else low[u]=min(low[u],dfn[v]);
}
}
int n,m,a,b,c;
int main(){
while(~scanf("%d%d",&n,&m)){
if(!n&&!m)break;
init();
for(int i=;i<=m;++i){
scanf("%d%d%d",&a,&b,&c);
add(a,b,c,i);
add(b,a,c,i);
}
int blo=;ans=inf;
for(int i=;i<=n;++i)
if(!dfn[i]){
blo++;
dfs(i,-);
}
if(blo>)printf("0\n");
else if(!ans)printf("1\n");
else if(ans==inf)printf("-1\n");
else printf("%d\n",ans);
}
return ;
}
最新文章
- Integer 中的缓存类IntegerCache
- 正在开发纯BS的可在线编辑内容的电子病历编辑器
- PDO知识
- Java局部变量final
- Task与Thread间的区别
- lightOJ1370 欧拉函数性质
- QMessageBox 中的 OK 按钮改为中文“确定”
- dl dt dd标签
- 评侯捷的<深入浅出MFC>和李久进的<MFC深入浅出>
- C#类详解
- docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
- 【Python 16】分形树绘制4.0(利用递归函数绘制分形树fractal tree)
- 007-chrome插件系列
- 【快捷键】IntelliJ IDEA For Mac 常用快捷键
- 长度不超过n的连续最大和___优先队列
- <;<;linux device driver,third edition>;>; Chapter 3:Char Drivers
- Codeforces 670E - Correct Bracket Sequence Editor - [链表]
- C语言程序设计I—寒假作业
- wpf/wp/win8中的代码编写过程
- [UI] Article intro effects
热门文章
- TP框架---thinkphp查询和添加数据
- 【BZOJ1776】[Usaco2010 Hol]cowpol 奶牛政坛 树的直径
- 九度OJ 1171:C翻转 (矩阵计算)
- JavaScript如何判断非空
- UVA 11077 - Find the Permutations(递推)
- Java for LeetCode 088 Merge Sorted Array
- UML类图几种关系的总结 ---(转载)
- Algorithm: Sieve of Eratosthenes
- NPM 与 Nodejs
- i=i+2 与i+=2