博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
无向图最小环
阅读量:5014 次
发布时间:2019-06-12

本文共 1667 字,大约阅读时间需要 5 分钟。

【题目描述】:

给定一张无向图,求图中一个至少包含 3个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题。在本题中,你需要输出最小环的边权之和。若无解,输出 “No solution.”。图的节点数不超过 100。

【输入描述】:

第一行两个正整数 n,m表示点数和边数。

接下来 m行,每行三个正整数 x,y,z,表示节点 x,y之间有一条长度为 z的边。

【输出描述】:

输出一个最小环的边权之和。若无解,输出 “No solution.”

【样例输入】: 5 7 1 4 1 1 3 300 3 1 10 1 2 16 2 3 100 2 5 15 5 3 20

【样例输出】: 61

【时间限制、数据范围及描述】:

时间:1s 空间:512M

对于 20%的数据:1<=n<=10;

对于100%的数据:1<=n<=100;边权<=300。

对着floyd的模板打了半天,感觉for循环好多···

不过这道题模板改改就能用。

(不要纠结数组为什么是dijsktra的缩写)

 

 

#include
#include
#include
#include
#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int MAX=105;const int oo=100000000;int n,m;int dist[MAX][MAX],a[MAX][MAX];int s[MAX][MAX];int ans[MAX];int hh;inline int mn(int x,int y){
return x
y?x:y;}void init(){ int i,j; int u,v,w; for (i=1;i<=n;i++){ for (j=1;j<=n;j++){ dist[i][j]=a[i][j]=(i==j?0:oo); } } mem(s,0); ans[0]=0; for (i=1;i<=m;i++){ scanf("%d%d%d",&u,&v,&w); a[u][v]=mn(a[u][v],w); dist[u][v]=dist[v][u]=a[v][u]=a[u][v]; }}void dfs(int u,int v){ int k=s[u][v]; if (k==0){ ans[++ans[0]]=v; return; } dfs(u,k); dfs(k,v);}void floyd(){ int i,j,k; hh=oo; for (k=1;k<=n;k++){ for (i=1;i
dist[i][k]+dist[k][j]){ s[i][j]=k; dist[i][j]=dist[i][k]+dist[k][j]; } } } }}int main(){ freopen ("trip.in","r",stdin); freopen ("trip.out","w",stdout); init(); int i,j; while (~scanf("%d%d",&n,&m)){ init(); floyd(); if (hh==oo){ puts("No solution."); } else{ for (i=1;i

 

转载于:https://www.cnblogs.com/hrj1/p/11139549.html

你可能感兴趣的文章
How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)
查看>>
ACM/ICPC 之 模拟 (HNUOJ 13391-换瓶模拟)
查看>>
JavaWeb学习——JSP基础
查看>>
Eclipse tomcat server 无法添加项目
查看>>
黑寡妇黄飞鸿
查看>>
leetcode 217 Contains Duplicate 数组中是否有重复的数字
查看>>
The Ctrl & CapsLock `problem'
查看>>
MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
查看>>
linux故障判断
查看>>
Leetcode 23. Merge k Sorted Lists(python)
查看>>
Java进阶知识点6:并发容器背后的设计理念 - 锁分段、写时复制和弱一致性
查看>>
Makefile ===> Makefile 快速学习
查看>>
face detection[HR]
查看>>
java性能调优工具
查看>>
C# 其他的Url 文件的路径转化为二进制流
查看>>
cmake使用
查看>>
ios7上隐藏status bar
查看>>
构造方法和全局变量的关系
查看>>
python3基础05(有关日期的使用1)
查看>>
ArrayList的使用方法
查看>>