题目链接:旅行社的烦恼

题意是求无向图的最小环,如果有的话,输出个数,并且输出权值。

刚刚补了一发floyd 动态规划原理,用了滑动数组的思想。所以,这个题就是floyd思想的变形。在k从1到n的过程中更新到k时,mindis数组中保存的是只经过1~k-1序号的点时,任意两个之间的最短路权值,这时候,选择点k作为环的起点即终点,在[1, k)之间选择两个点i, j 得到一个环,环的权值即为mindis[i][j] + dis[i][k] + dis[j][k]。这样遍历得到的是就是所有的环,且环内不出现重复的点。环也不会重复。好巧妙~~献上我的膝盖...

附代码:

#include <stdio.h>
#include <string.h>
#include <iostream>
#define inf 100000000
using namespace std; int dis[110][110];
int mindis[110][110]; int main() {
int t;
cin >> t;
while(t--) {
int n, m;
cin >> n >> m; for (int i=1; i<=n; ++i) {
for (int j=1; j<=n; ++j) {
dis[i][j] = inf;
}
} for (int i=0; i<m; ++i) {
int x, y, w;
cin >> x >> y >> w;
if (dis[x][y] > w) {
dis[x][y] = w;
dis[y][x] = w;
}
} for (int i=1; i<=n; ++i) {
for (int j=1; j<=n; ++j) {
mindis[i][j] = dis[i][j];
}
} int ansdis = inf, anscnt = 0; for (int k=1; k<=n; ++k) {
for (int i=1; i<k; ++i) {
for (int j=i+1; j<k; ++j) {
if (ansdis > dis[i][k] + dis[j][k] + mindis[i][j]) {
ansdis = dis[i][k] + dis[j][k] + mindis[i][j];
anscnt = 1;
}
else if (ansdis == dis[i][k] + dis[j][k] + mindis[i][j]) {
anscnt++;
}
}
}
for (int i=1; i<=n; ++i) {
for (int j=1; j<=n; ++j) {
mindis[i][j] = min(mindis[i][j], mindis[i][k] + mindis[j][k]); // 感觉最后一个mindis[j][k] 如果换成mindis[k][j]的话应该WA的,然而并没有。好奇怪...
}
}
} if (anscnt == 0) {
cout << "-1\n";
}
else cout << ansdis << " " << anscnt << endl;
}
return 0;
}

注释处...mindis[j][k]应该是不等于mindis[k][j]的..不解...................

FZU 2090 旅行社的烦恼 floyd 求无向图最小环的更多相关文章

  1. poj1734 Sightseeing trip(Floyd求无向图最小环)

    #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...

  2. hdu 1599 find the mincost route floyd求无向图最小环

    find the mincost route Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  3. bzoj 1027 floyd求有向图最小环

    结合得好巧妙.... 化简后的问题是: 给你两个点集A,B,求B的一个子集BB,使得BB的凸包包含A的凸包,求BB的最小大小. 先特判答案为1,2的情况,答案为3的情况,我们先构造一个有向图: 对于B ...

  4. find the mincost route(floyd变形 无向图最小环)

    Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  5. Floyd求最小环并求不同最小环的个数

    FZU2090 旅行社的烦恼 Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u [Subm ...

  6. World Finals 1996 Uva 247 (Floyd求闭包)

    思路:用Floyd求传递闭包. 附:逗号后的空格没看到,WA了好多次…….还有就是强连通分量也可以做,但是对这个题来说太麻烦,而且不方便输出,. 代码如下: #include<iostream& ...

  7. 2017"百度之星"程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】

    度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...

  8. Tarjan求无向图割点、桥详解

    tarjan算法--求无向图的割点和桥   一.基本概念 1.桥:是存在于无向图中的这样的一条边,如果去掉这一条边,那么整张无向图会分为两部分,这样的一条边称为桥无向连通图中,如果删除某边后,图变成不 ...

  9. POJ 3660 Cow Contest(Floyd求传递闭包(可达矩阵))

    Cow Contest Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16341   Accepted: 9146 Desc ...

随机推荐

  1. E2 2014.6.3 更新日志

    增加功能 增加支持中关村获取商品信息 增加个人业绩查询功能 增加赠送和获赠查询功能 增加商品历程分析报表,资金历程分析报表,科目明细分析报表, 销售分析报表 增加服务维修明细表查询报表 完善功能 固定 ...

  2. OC面向对象及继承

    1. 面向对象它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中.面向对象的编程语言使得复杂的工作条理清晰.编写容易.说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言. ...

  3. [转载] 多年积累的 mysql 运维经验

    原文: http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=207132223&idx=1&sn=f5d98146f282 ...

  4. [转载] linux cgroup

    原文: http://coolshell.cn/articles/17049.html 感谢左耳朵耗子的精彩文章. 前面,我们介绍了Linux Namespace,但是Namespace解决的问题主要 ...

  5. Python学习(1)安装Python

    *****  安装Python 在官网上 https://www.python.org/downloads/ 可以看到有3.5.1与2.7.11两个版本,我这里用的是3.5.1版本 我用的是win7/ ...

  6. UI设计基础百科

    摘自:http://www.csdn.net/article/2013-09-10/2816892-iOS-dev-tools-design 我的原型设计流程 这是一份UX原型设计流程,用来探索交互设 ...

  7. XML HTML

    XML和HTML常用转义字符 XML和HTML中都有一些特殊的字符,这些字符在XML和HTML中是不能直接使用的,如果必须使用这些字符,应该使用其对应的转义字符. XML常用转义字符: 字符 转义字符 ...

  8. git命令之git rebase 的用法

    rebase 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 现在我 ...

  9. Ubuntu 查看文件以及磁盘空间大小管理

    (1)查看文件大小  查看当前文件夹下所有文件大小(包括子文件夹)    du -sh   # du -h15M     ./package16K     ./.fontconfig4.0K    . ...

  10. C#_加密解密

    一.MD5加密解密 1.加密 public static string ToMd5(string clearString) { Byte[] clearBytes = System.Text.Enco ...