POJ 1679 The Unique MST(次小生成树)
来源:互联网 发布:淘宝售后问题大全 编辑:程序博客网 时间:2024/05/20 09:22
//// main.cpp// Richard//// Created by 邵金杰 on 16/8/18.// Copyright © 2016年 邵金杰. All rights reserved.//#include<iostream>#include<cstdio>#include<vector>#include<cstring>#include<queue>using namespace std;const int maxn=100+5;const int INF=100000000;struct edge{ int u,v,w; edge(int u,int v,int w): u(u),v(v),w(w) {} bool operator < (const edge &e) const { return w>e.w; }};int n,m;vector<vector<edge> > G(maxn);int vis[maxn],d[maxn][maxn],dist[maxn],map[maxn][maxn];void Prim(){ memset(vis,0,sizeof(vis)); memset(d,0,sizeof(d)); for(int i=1;i<=n;i++) dist[i]=INF; priority_queue<edge> pq; pq.push(edge(0,1,0)); edge nd(0,0,0); int mst=0,cmst=INF; while(!pq.empty()) { do{ nd=pq.top(); pq.pop(); }while(vis[nd.v]&&!pq.empty()); if(vis[nd.v]==0) { map[nd.u][nd.v]=map[nd.v][nd.u]=0; vis[nd.v]=1; mst+=nd.w; d[nd.u][nd.v]=nd.w; for(int i=1;i<=n;i++) { if(vis[i]) { d[i][nd.v]=max(d[i][nd.u],d[nd.u][nd.v]); d[nd.v][i]=d[i][nd.v]; } } for(int i=0;i<G[nd.v].size();i++) { int e=G[nd.v][i].v; if(!vis[e]) { int w=G[nd.v][i].w; if(dist[e]>w) { dist[e]=w; pq.push(edge(nd.v,e,w)); } } } } } for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { if(map[i][j]) cmst=min(cmst,mst+map[i][j]-d[i][j]); } } if(mst==cmst) printf("Not Unique!\n"); else printf("%d\n",mst);}int main(){ int t; scanf("%d",&t); while(t--) { memset(map,0,sizeof(map)); int a,b,c; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) G[i].clear(); for(int i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); map[a][b]=map[b][a]=c; G[a].push_back(edge(a,b,c)); G[b].push_back(edge(b,a,c)); } Prim(); }}
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 1679The 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 (次小生成树)
- Ubuntu 12.04编译mt6582错误
- log4j.properties日志配置
- onSaveInstanceState(转)
- Spring的父子容器问题和坑
- Linux文件系统以及目录结构简介
- POJ 1679 The Unique MST(次小生成树)
- ORCLE SQL截取某字符串中的最后一个之后的字符串
- 【NOIP2012模拟11.1】塔(加强)
- 深入理解extern "C"
- qrand() 的用法
- CodeForces 703C Chris and Road
- css 页面重绘和回流(重排)以及优化
- ButterKnife 8.0.1接入简要说明及出的空指针异常处理
- hdu 1069-Monkey And Banana(The Tower of Babylon)