UVA 10462 Is There A Second Way Left? 次小生成树
2024-10-19 11:45:56
模板题
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <stack>
#include <queue>
#include <cmath>
#include <vector>
using namespace std;
const int N=;
const int INF=0x3f3f3f3f;
int fa[N],head[N],tot,T,n,m,d[N][N];
struct Edge{
int v,next,w;
}edge[N<<];
void add(int u,int v,int w){
edge[tot].v=v;
edge[tot].w=w;
edge[tot].next=head[u];
head[u]=tot++;
}
struct Node{
int u,v,w;
bool mark;
bool operator<(const Node &rhs)const{
return w<rhs.w;
}
}p[N<<];
int find(int x){
return x==fa[x]?x:fa[x]=find(fa[x]);
}
int s;
void dfs(int u,int f,int t){
d[s][u]=t;
for(int i=head[u];~i;i=edge[i].next){
int v=edge[i].v;
if(v==f)continue;
dfs(v,u,max(t,edge[i].w));
}
}
int main()
{
int cas=;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
tot=;
printf("Case #%d : ",++cas);
memset(d,,sizeof(d));
for(int i=;i<=n;++i)fa[i]=i,head[i]=-;
for(int i=;i<=m;++i){
scanf("%d%d%d",&p[i].u,&p[i].v,&p[i].w);
p[i].mark=;
}
sort(p+,p++m);
int tmp=n;
int mst=,ans=INF;
for(int i=;i<=m;++i){
int u=find(p[i].u),v=find(p[i].v);
if(u!=v){
--tmp;
fa[u]=v;
mst+=p[i].w;
p[i].mark=;
add(p[i].u,p[i].v,p[i].w);
add(p[i].v,p[i].u,p[i].w);
if(tmp==)break;
}
}
if(tmp>){
printf("No way\n");
continue;
}
for(int i=;i<=n;++i){
s=i;dfs(i,,);
}
for(int i=;i<=m;++i){
if(p[i].mark)continue;
ans=min(ans,mst-d[p[i].u][p[i].v]+p[i].w);
}
if(ans==INF)printf("No second way\n");
else printf("%d\n",ans);
}
return ;
}
最新文章
- 检查Chunksum与Chunk Data之间的缓冲区发送到DataNode节点
- 【转】PHP计划任务:如何使用Linux的Crontab执行PHP脚本
- mysql 5.7.15发布
- php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类
- Swift 2.0基本语法
- 如何使一个input文本框随其中内容而变化长度(转)
- [ES6] 20. Polyfills
- DataSource
- CSS知识总结之设计模式(持续学习中)
- Oracle Rac创建表空间及用户
- 新人大餐:2018最新Office插件开发之ExcelDNA开发XLL插件免费教学视频,五分钟包教包会
- 《笨方法学Python》加分题6
- C# sapnco支持.net 4.5了,真是个意外的发现
- mysql 通过查看mysql 配置参数、状态来优化你的mysql
- tp框架中的一些疑点知识-1
- 前端框架之Vue.js
- django的forms
- HTML meta标签总结,HTML5 head meta属性整理
- Xpath语法与lxml库的用法
- PTA (Advanced Level) 1040 Longest Symmetric String