题意:判断最短路是否唯一。

思路:先prrim一次求出最短路同时记录最短路加入的边;

然后枚举所求边,将其删除再求n-1次prim,判断再次所求得的最短路与第一次求得的次短路的关系。

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#define MAXN 5050
#define inf 100000000
using namespace std; struct Edge{
int u,v,w;
}edge[MAXN]; int n,m,mst;
int map[MAXN][MAXN],dis[MAXN],fit[MAXN];
bool unique; void prim()
{
int i,j,now,minn,mine;
int num;int k=0;
unique=true;
for( i=0;i<=n;i++)
{
dis[i]=inf;
}
mst=0;
now=1;
for( i=1;i<n;i++)
{
dis[now]=-1;
mine=inf;
for( j=1;j<=n;j++)
{
if(j!=now&&dis[j]>=0)
{
if(map[now][j]<dis[j])
{
dis[j]=map[now][j];
fit[j]=now;
}
if(dis[j]<mine)
{
mine=dis[j];
minn=j;
}
}
}
if(mine==inf)
{
mst=0;
return ;
}
edge[k].u=minn;
edge[k].v=fit[minn];
edge[k].w=map[minn][fit[minn]];
k++;
now=minn;
mst+=mine;
}
num=k;
for(k=0;k<num;k++)
{
map[edge[k].u][edge[k].v]=inf;
map[edge[k].v][edge[k].u]=inf;
if(i!=0)
{
map[edge[k-1].u][edge[k-1].v] = edge[k-1].w;
map[edge[k-1].v][edge[k-1].u] = edge[k-1].w;
}
for(i = 1; i <= n; i ++)
dis[i] = inf; int mst2=0;
bool flag=true;
now=1;
for(i=1;i<n;i++)
{
dis[now]=-1;
mine=inf;
for(j=1;j<=n;j++)
{
if(j!=now&&dis[j]>=0)
{
if(map[now][j]<dis[j])
{
dis[j]=map[now][j];
}
if(dis[j]<mine)
{
mine=dis[j];
minn=j;
}
}
}
if(mine==inf)
{
flag=false;
break;
}
now=minn;
mst2+=mine;
}
if(flag&&mst2==mst)
{
unique=false;
return ;
}
} } int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
map[i][j]=inf;
}
}
for(int i=0;i<m;i++)
{
int v,w,c;
scanf("%d%d%d",&v,&w,&c);
map[v][w]=c;
map[w][v]=c;
}
prim();
if(!unique)printf("Not Unique!\n");
else printf("%d\n",mst);
}
return 0;
}

poj 1679 Prim判断次短路的更多相关文章

  1. poj 1679 The Unique MST 【次小生成树】【模板】

    题目:poj 1679 The Unique MST 题意:给你一颗树,让你求最小生成树和次小生成树值是否相等. 分析:这个题目关键在于求解次小生成树. 方法是,依次枚举不在最小生成树上的边,然后加入 ...

  2. POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...

  3. CodeForces - 449B 最短路(迪杰斯特拉+堆优化)判断最短路路径数

    题意: 给出n个点m条公路k条铁路. 接下来m行 u v w      //u->v 距离w 然后k行 v w         //1->v 距离w 如果修建了铁路并不影响两点的最短距离, ...

  4. POJ 3259 Wormholes(最短路,判断有没有负环回路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24249   Accepted: 8652 Descri ...

  5. POJ 1679 The Unique MST(判断最小生成树是否唯一)

    题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...

  6. poj 1679 判断MST是不是唯一的 (次小生成树)

    判断MST是不是唯一的 如果是唯一的 就输出最小的权值和 如果不是唯一的 就输出Not Unique! 次小生成树就是第二小生成树  如果次小生成树的权值和MST相等  那么MST就不是唯一的 法一: ...

  7. POJ 1679 The Unique MST 【判断最小生成树是否唯一】

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique.  Defini ...

  8. POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)

    题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...

  9. POJ 3259 Wormholes【最短路/SPFA判断负环模板】

    农夫约翰在探索他的许多农场,发现了一些惊人的虫洞.虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径 ...

随机推荐

  1. [补档]vijos1883 月光的魔法

    vijos1883 月光的魔法 题目 传送门:https://www.vijos.org/p/1883 背景 影几欺哄了众生了 天以外-- 月儿何曾圆缺   描述 有些东西就如同月光的魔法一般. Lu ...

  2. iOS设置状态栏样式

    iOS设置状态栏样式可以使用两种方式. 方式一: 直接在需要改变默认状态栏样式的控制器中实现一个方法(其他任何事情都不用做): // 返回状态栏的样式 - (UIStatusBarStyle)pref ...

  3. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)

    写在前面的话 原计划这部分代码的更新也是上传到ssm-demo仓库中,因为如下原因并没有这么做: 有些使用了该项目的朋友建议重新创建一个仓库,因为原来仓库中的项目太多,结构多少有些乱糟糟的. 而且这次 ...

  4. [算法题] Search in Rotated Sorted Array

    题目内容 本题来源LeetCode Suppose an array sorted in ascending order is rotated at some pivot unknown to you ...

  5. 初识webview

    一.什么是webview   原生APP开发中有一个webview的组件(Android中是webview,iOS7以下有UIWebview,7以上有WKWebview),这个组件可以加载Html文件 ...

  6. Markdown简明教程

    一.Markdown到底是什么? Markdown是一种轻量级的标记语言,它使用很少量的符号控制文字的样式和排版,简单易学,使你更专注于文字. 二.Markdown的使用 接下来让我们一起来看下Mar ...

  7. shell 字符串

    字符串可以分为单引号,双引号,也可以不用引号 单引号 str='this is string' 单引号字符的限制: 单引号中的任何字符都会原样输出,单引号中变量是无效的 单引号中不能出现单引号 双引号 ...

  8. DataGuard实战1

    DataGuard实战1 -------------------------------------------2013/10/27   一.Primary数据库的配置及操作 1. 确定主库处于归档日 ...

  9. JVM(一)JVM的基本结构

    JVM基本结构 一 JVM基本结构示意图 二 JVM结构详解 一 程序计数器 程序计数器是一块较小的内存空间,它是当前线程所执行的字节码的行号指示器,如果线程执行的是一个Java方法,这个计数器记录的 ...

  10. angularjs select标签中参数的传递

    今天做的一个demo中需要一个下拉选择框,并根据所选择的内容向服务器发送请求. 首先百度了一下angularjs关于select的使用,一种采用ng-repeat的方式. <select ng- ...