poj 1679 The Unique MST
来源:互联网 发布:网络线材厂家 编辑:程序博客网 时间:2024/06/05 06:36
判断最小生成树是否唯一,只需要判断是否存在至少有两条到达某个点相同权值的路径
#include<stdio.h>#include<string.h>#include<math.h>#include<vector>#include<algorithm>#include<iostream>using namespace std;#define N 110#define LL __int64#define inf 1999999999int dis[N],Map[N][N];bool vis[N];int n,m;void prime(){ int i,j,Min,t; memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) dis[i]=Map[1][i]; dis[1]=0;vis[1]=1; int ans=0; for(i=1;i<n;i++) { Min=inf,t=0; for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]<Min) { Min=dis[j]; t=j; } } int k=0; for(j=1;j<=n;j++)//判断 { if(Map[j][t]==Min) k++; } if(k>1) break; vis[t]=1; ans+=Min; for(j=1;j<=n;j++) { if(!vis[j]&&dis[j]>Map[t][j]) dis[j]=Map[t][j]; } } if(i<n)printf("Not Unique!\n"); else printf("%d\n",ans);}int main(){ int i,j,t,u,v,w; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) Map[i][j]=inf; } for(i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&w); if(Map[u][v]>w) Map[u][v]=Map[v][u]=w; } prime(); } return 0;}
0 0
- POJ 1679 The Unique MST
- poj 1679 The Unique MST
- poj 1679 The Unique MST
- POJ 1679 The Unique MST
- poj 1679 The Unique MST
- poj 1679 The Unique MST
- POJ-1679 The Unique MST
- POJ 1679 The Unique MST
- POJ 1679 The Unique MST
- POJ-1679-The Unique MST
- Poj 1679 The Unique MST
- poj 1679 The Unique MST
- POJ-1679-The Unique MST
- POJ 1679 The Unique MST
- POJ 1679 The Unique MST
- POJ-1679-The Unique MST
- poj 1679 The Unique MST
- poj 1679-The Unique MST
- git merge fast-forward squash no-ff
- 放弃Layer
- canvas绘图工具加上JavaScript特效绘制出能动的太阳系
- 常用软件下载地址
- python中not的用法
- poj 1679 The Unique MST
- epoll与线程池实现
- opencv源码解析之(6):hog源码分析
- 集合
- reserverd_mem.h
- online_judge_1013
- 关于12306网络购票的架构方面思考
- Android 资源文件的编译
- Android 中文API网址