题意:

n个点m条边,如果图中有环,输出最小环路径,否则输出"No solution."

思路:

开一个pre[][]数组
pre[i][j]表示i到j最短路上j的入点(前驱)
每当任意两点i,j之间的最短路更新,同时更新pre[i][j]
查找路径操作具体看代码

code:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
const int maxm=105;
const int inf=1e8;
int d[maxm][maxm];//最短路图(可改)
int g[maxm][maxm];//原图(不改)
int pre[maxm][maxm];//pre[i][j]表示i到j最短路中j的入点(前驱)
vector<int>res;
int n,m;
void getpath(int i,int j,int k){res.clear();while(j!=i){res.push_back(j);j=pre[i][j];}res.push_back(i);res.push_back(k);
}
void floyd(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){d[i][j]=g[i][j];}}int ans=inf;for(int k=1;k<=n;k++){for(int i=1;i<k;i++){for(int j=i+1;j<k;j++){int t=g[i][k]+g[k][j]+d[i][j];if(t<ans){ans=t;getpath(i,j,k);}}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){int t=d[i][k]+d[k][j];if(t<d[i][j]){d[i][j]=t;pre[i][j]=pre[k][j];}}}}if(ans==inf){puts("No solution.");}else{int len=res.size();for(int i=0;i<len;i++){if(i)putchar(' ');printf("%d",res[i]);}puts("");}
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){//initfor(int j=1;j<=n;j++){g[i][j]=(i==j)?0:inf;pre[i][j]=i;}}for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);g[a][b]=g[b][a]=min(g[a][b],c);}floyd();return 0;
}

poj1734 Sightseeing trip (输出最小环路径)相关推荐

  1. POJ1734 sightseeing trip(YBT3201)

    试题描述 给定一张无向图,求图中一个至少包含 3 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方案,若最小环不唯一,输出任意一个均 ...

  2. 【POJ1734】Sightseeing Trip 无向图最小环

    题目大意:给定一个 N 个顶点的无向图,边有边权,如果存在,求出该无向图的最小环,即:边权和最小的环,并输出路径. 题解:由于无向图,且节点数较少,考虑 Floyd 算法,在最外层刚开始遍历到第 K ...

  3. poj1734 Sightseeing trip[最小环]

    一个最小环裸题.最小环的两种求法dijkstra和Floyd直接参见这里我就是从这里学的,不想写了. 注意这里最重要的一个点是利用了Floyd的dp过程中路径上点不超过$k$这一性质,来枚举环上最大编 ...

  4. POJ1734 Sightseeing trip floyd求最小环问题

    问题描述 m个点, m条边, 求图中存在的路径最小的环 样例 Sample Input 5 7 1 4 1 1 3 300 3 1 10 1 2 16 2 3 100 2 5 15 5 3 20 Sa ...

  5. POJ - 1734 Sightseeing trip(最小环+输出路径)

    题目链接:点击查看 题目大意:给定一张无向图,求图中至少一个包含三个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方案,若最小环不唯一 ...

  6. URAL 1004 Sightseeing trip

    [报告] 非常非常裸的最小环-- 不过我实在是太惊讶了,因为URAL里的太多题目都是有多解的,弄的我郁闷万分.最后只好把别人的给交了. 程序并不是很出色,请不要盲目模仿--这个程序是不能AC的. 说句 ...

  7. 求二叉树中的第一条最长路径长度,并输出最长路径上的节点

    #include <stdio.h> #define MaxSize 1000typedef struct BiTNode {int data;struct BiTNode *lchild ...

  8. 算法 图中求最小环路径 最小环个数 最大平均环 求简单无向图中环的个数

    最小环问题:求个图中环路径代价最小的回路. 如何求最小环?假如有 路径1->3->2,如果此时已经知道2-1的最短路径就好了. 回想下floyed的更新过程,就会发现更新第k次时,比k小的 ...

  9. poj1734(最小环+路径)

    最小环问题:指的是在一张图中找出一个环,使得这个环的各边的权值之和最小. 方法一:断边法: 1.断开环的一条边(Wij=inf) 2.用Dijstra算法求出i->j的最短路径 3.恢复这条边的 ...

最新文章

  1. vuex之state-状态对象的获取方法(三)
  2. VC++ AfxBeginThread 与 CreateThread 的区别
  3. JS-为金额添加千分位逗号分割符
  4. 实战:基于自定义注解实现自定义框架Spring
  5. Python日志模块学习,从这里开始...
  6. 【分布计算环境学习笔记】3 软件构件结构
  7. Tex, LaTex概念及实例
  8. 恩布开源安卓手机IM,EntboostIM发布1.5.1版本
  9. 区块链应用大数据的优势有哪些
  10. c语言for语句10内的累乘,c语言累加累乘教案.doc
  11. HotFix方案原理
  12. Develop -- Training(十五) -- 显示高效位图
  13. arm64的prefetch/prefetchw/spin_lock_prefetch
  14. android实现vr 功能,VR模式成亮点:属于Android N的10大新功能
  15. Php静默授权,【公众号】微信第三方登录(静默授权和非静默授权)(具体代码:U盘 新浪云SAE)...
  16. 基于Three.js和MindAR实现的网页端人脸识别功能和仿抖音猫脸特效换脸的各种面罩实现(含源码)
  17. 心はちょっと疲れた、誰も片隅に休んで……作者の宝物は
  18. 消息队列MQ常见面试题
  19. DLP市场份额第一 | IDC 首份中国数据泄露防护市场份额报告发布
  20. 云计算实训之项目3-基于微信实现自动化监控报警

热门文章

  1. phpStudy后台搭建
  2. 数字孪生“独木难支”产业元宇宙
  3. 如何用vs新建html项目,VS2010中添加HTML5项目模板
  4. MySql中设置时区为东八区
  5. Android使用rosjava编写控制机器人APP(记录)
  6. 基于android的网络音乐播放器-通知栏控制(RemoteViews)(十)
  7. 文本分析模型的应用分类及特点
  8. 微信小程序制作页面内导航栏
  9. iOS开发通过微信学习WCDB(一)
  10. 郑州公办中专计算机学校,郑州排名前十的公办中专