• 题目大意

    求一个无向图的最小环

  • 题解

    假设是有向图的话。仅仅须要令f[i][i]=+∞,再floyd就可以;

    对无向图。应该在floyd算法循环至k的一開始进行例如以下操作:

    枚举i和j,假设点i存在经过点j的环,则用i→k。k→j,j→编号小于k的结点→i 的最短路去更新最小环的长度,

    即ans=min{ans,map[i][k]+map[k][j]+f[i][j]}

    然后更新最小环。

    这个工作进行完之后。才干够用floyd计算i→k→j的最短路。

  • Code

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int oo = 1000000000;
int n, m, map[110][110], pre[110][110], f[110][110];
int ans, path[110], top;
void init()
{
int x, y, z;
scanf("%d%d", &n, &m);
memset(f, -1, sizeof(f));
memset(map, -1, sizeof(map));
memset(pre, -1, sizeof(pre));
for(int i = 1; i <= m; ++i)
{
scanf("%d%d%d", &x, &y, &z);
if(f[x][y] == -1)
{
f[x][y] = f[y][x] = map[x][y] = map[y][x] = z;
}
else
{
f[x][y] = f[y][x] = map[x][y] = map[y][x] = min(map[x][y], z);
}
pre[x][y] = x;
pre[y][x] = y;
}
for(int i = 1; i <= n; ++i)
{
f[i][i] = map[i][i] = 0;
}
ans = oo;
}
void work()
{
for(int k = 1; k <= n; ++k)
{
for(int i = 1; i < k; ++i)
{
for(int j = i + 1; j < k; ++j)
{
if(map[i][k] != -1 && map[k][j] != -1 && f[i][j] != -1 && ans > f[i][j] + map[i][k] + map[k][j])
{
ans = f[i][j] + map[i][k] + map[k][j];
int t = j;
top = 0;
while(t != i)
{
path[++top] = t;
t = pre[i][t];
}
path[++top] = i;
path[++top] = k;
}
}
}
//以上为找最小环
//下面为floyd更新最短路
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= n; ++j)
{
if(f[i][k] != -1 && f[k][j] != -1 && (f[i][j] == -1 || f[i][j] > f[i][k] + f[k][j]))
{
f[i][j] = f[i][k] + f[k][j];
pre[i][j] = pre[k][j];
}
}
}
}
if(ans == oo)
{
puts("No solution.");
return;
}
for(int i = 1; i <= top; ++i) printf("%d ", path[i]);
}
int main()
{
init();
work();
return 0;
}

Poj1734题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. POJ 1723 SOLDIERS

    SOLDIERS Time Limit: 1000ms Memory Limit: 10000KB This problem will be judged on PKU. Original ID: 1 ...

  2. Qt 在圆形中贴图片

    void Widget::paintEvent(QPaintEvent *) { QPainter p(this); QPixmap pix(":/images/a.jpg"); ...

  3. 洛谷 P2083 找人

    P2083 找人 题目背景 无 题目描述 小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间.那个单元有N层(1,2……N),每层有M(1,2……M)个房间. 小明会从第一层的某个房间 ...

  4. placement new和delete

    注意,我们无法改变new和delete操作符. 但是我们可以重载来里面的operator new 和 operator delete 方法,这个方法是被new操作符调用的,调用之后获得地址,会继续用构 ...

  5. html5的代码验证

    http://html5.validator.nu/ http://validator.w3.org/#validate_by_uri

  6. 轻松python专题--文本

    基础篇:(取材于零基础学python) 7.1 python中的字符串简单介绍与经常使用函数 7.2 字符串常量 7.3 字符串的一般使用 7.4 改动字符串实例 7.5 文本解析 7.6 字符串格式 ...

  7. 在VPS上用Outline Manager 建立*** 增强版服务器

    在VPS上用Outline Manager 建立*** 增强版服务器 原文 https://free.com.tw/google-outline/ Outline 是Google Jigsaw的一款开 ...

  8. 11.ng-init

    转自:https://www.cnblogs.com/best/tag/Angular/ 初始化 <p ng-init="test=1" ng-repeat="a ...

  9. 写了个关于tomcat项目部署脚本 shell

    #!/bin/bash tomcat_project_path=" /server/tomcat" tomcat_cp_path="/root/tools/apache- ...

  10. request获取各种路径总结、页面跳转总结。

    页面跳转总结 JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使 ...