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

思路:先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. 48. leetcode 105题 由树的前序序列和中序序列构建树结构

    leetcode 105题,由树的前序序列和中序序列构建树结构.详细解答参考<剑指offer>page56. 先序遍历结果的第一个节点为根节点,在中序遍历结果中找到根节点的位置.然后就可以 ...

  2. 推荐60个jQuery插件(转)

    jQuery插件jQuery Spin Button自定义文本框数值自增或自减 jQuery插件JQuery Pager分页器实现javascript分页功能 jQuery插件FontSizer实现J ...

  3. 度度熊与邪恶大魔王 DP | 完全背包

    Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...

  4. 友盟崩溃日志分析工具 - dSYMTools

    公司的项目中集成了UM的统计功能,UM统计可以统计app的用户新增,版本分布,日志崩溃等信息,打开错误分析按钮,则可能会看到很多崩溃的日志信息 选择编辑可以选择更多的版本号 点击列表中的一个崩溃日志, ...

  5. 【HOSTS相关】什么时候使用127.0.0.1

    什么时候使用127.0.0.1 在测试环境,如果想知道上线后服务发生异常中断的情况下界面会如何展示,这个时候有2种方式: 第1种是:由开发人员协助,比如后台开发人员在服务器上使这个服务停止,或者由前端 ...

  6. 使用 GitHub+Hexo 搭建个人博客

    1.安装Git和Hexo 安装Hexo前,需要安装Node.js和Git: Node.js 下载地址 我选择的是v6.11.2 LTS Git 下载地址 我下载的是Git-2.12.2.2-64-bi ...

  7. android 适配器 ArrayAdapter,SimpleAdapter的学习

    今天认真看了下android适配器,学习了下它的使用方法. 一,ArrayAdapter ArrayAdapter 比较简单,只可以存放一行文本信息.下面是简单的实现 private ListView ...

  8. Linux学习总结(七)—— CentOS软件包管理:脚本安装

    脚本安装就是软件编写者写好一个shell脚本或者java脚本,你只需要输入一些简单的信息便可直接安装.这种安装方式方便简单,类似于Windows下软件的安装方式. 下面以webmin的安装为例讲解脚本 ...

  9. 遇到local variable 'e' referenced before assignment这样的问题应该如何解决

    问题:程序报错:local variable 'e' referenced before assignment 解决:遇到这样的问题,说明你在声明变量e之前就已经对其进行了调用,定位到错误的地方,对变 ...

  10. 如何修改ionic Popup的样式

    第一次用ionic的Popup时感觉很好用,但是太丑了.但是又不会修改自定义的样式,只能自己写了个模态框.后来仔细搜索了一下.发现还是可以修改的. var confirmPopup = $ionicP ...