题目:

学校里面有N个景点。两个景点之间可能直接有道路相连,用Dist[I,J]表示它的长度;否则它们之间没有直接的道路相连。这里所说的道路是没有规定方向的,也就是说,如果从I到J有直接的道路,那么从J到I也有,并且长度与之相等。学校规定:每个游客的旅游线路只能是一个回路(好霸道的规定)。也就是说,游客可以任取一个景点出发,依次经过若干个景点,最终回到起点。一天,Xiaomengxian决定到湖南师大附中旅游。由于他实在已经很累了,于是他决定尽量少走一些路。于是他想请你——一个优秀的程序员——帮他求出最优的路线。

这题是标准的floyd最小环问题(话说,我对这个经典算法还是有些疑惑,有想法的请留言)

切记切记,我已经多次犯一个同样的错误了:输出忘记换行。

在FP中,输出都习惯性的打成writeln,而C++的printf中\n功能不是很熟,因此老是忘记。

#include<stdio.h>
using namespace std;
long long f[101][101],map[101][101],ans,oo=99999999;
long i,j,k,n,m,x,y,z;
int main()
{
  while (scanf("%ld%ld",&n,&m)!=EOF)
  {
    for (i=1;i<=n;i++)
      for (j=1;j<=n;j++)
        {
          f[i][j]=oo;
          map[i][j]=oo;
        }
    for (i=1;i<=m;i++)
      {
       scanf("%ld%ld%ld",&x,&y,&z);
        map[x][y]=z;map[y][x]=z;
        f[x][y]=z;f[y][x]=z;
      }
    ans=oo;
    for (k=1;k<=n;k++)
      {
      for (i=1;i<=k-1;i++)
        for (j=i+1;j<=k-1;j++)
          if(f[i][j]+map[i][k]+map[k][j]<ans)
           ans=f[i][j]+map[i][k]+map[k][j];
      for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
          if((f[i][k]+f[k][j]<f[i][j])) f[i][j]=f[i][k]+f[k][j];
      }
    if (ans<oo) printf("%ld\n",ans);
    else printf("No solution.\n");                   //注释:就是这里的\n没打
  } 

附上之前错误的找环方案代码:(可能路径会重复)

 #include<stdio.h>
using namespace std;
const long oo=999999999;
long f[101][101],i,j,k,ans,n,m,x,y,z;
int main()
{
  while (scanf("%ld %ld",&n,&m)!=EOF)
  {
    for (i=1;i<=n;i++)
      for (j=1;j<=n;j++)
        f[i][j]=oo;
    for (i=1;i<=m;i++)
      {
        scanf("%ld %ld%ld",&x,&y,&z);
        f[x][y]=z;f[y][x]=z;
      }
    for (k=1;k<=n;k++)
      for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
          if((i!=j)&&(i!=k)&&(k!=j)&&(f[i][k]+f[k][j]<f[i][j]))f[i][j]=f[i][k]+f[k][j];
    ans=oo;
    for (i=1;i<=n;i++)
    {
      for (j=1;j<=n;j++)
        for (k=1;j<=n;j++)
          if((i!=j)&&(i!=k)&&(j!=k)&&(f[i][j]+f[j][k]+f[k][i]<ans))
           ans=f[i][j]+f[j][k]+f[k][i];
    }
    printf("%ld\n",ans);
  }
}

vijos1046题解的更多相关文章

  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. ionic2 自定义cordova插件开发以及使用 (Android)

    如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细.我自己也捣鼓了一下午,踩了很多坑.所以特此写这下这篇,记 ...

  2. sChart.js:一个小型简单的图表库

    介绍 sChart.js 作为一个小型简单的图表库,没有过多的图表类型,只包含了柱状图.折线图.饼状图和环形图四种基本的图表.麻雀虽小,五脏俱全.sChart.js 基本可以满足这四种图表的需求.而它 ...

  3. jq、js中判断checkbox是否选中

    最近在开发项目时用到checkbox复选框,其中遇到一个问题:在JQ中如何判断checkbox是否被选中呢?之前用JQ获取元素的属性用的都是attr(),但用在checkbox上却没有用,原因何在?? ...

  4. Qt之新手打包发布程序

    工具:电脑必备.QT下的windeployqt Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无 ...

  5. Redis数据类型之Hash(二)

    前言: Redis hash是一个String类型的field和value的映射表.添加.删除操作复杂度平均为O(1),为什么是平均呢?因为Hash的内部结构包含zipmap和hash两种.hash特 ...

  6. Java泛型学习

    1.泛型的概念 泛型即"参数化类型",就比如我们定义方法的时候,定义一个变量,称为形参,变量值根据传进去的实参的值不同而改变.而泛型的出现,就是为了解决类型也能根据传进去的类型改变 ...

  7. WireShark网络分析就这么简单 读后感

    京东618活动,满200减100,果断入手了这本经典的 WireShark教程

  8. 在ie下,a标签包被img的时候,为什么有个蓝色的边线

    效果像下图这样 那是由于<img>在ie下有默认边框,只要清除边框就可以了,在style中定义 img{ border:none } 显示效果就变成下面这样了 完!

  9. css的定位,relative/absolute/fixed的用法

    其实position的值有四个,static/relative/absolute/fixed,而static是默认值,不算具有有定位属性,这里就不讲了. 定位其实就是跟元素设置定位属性,然后设置其对位 ...

  10. 使用SQL语句使数据从坚向排列转化成横向排列(排班表)

    知识重点: 1.extract(day from schedule01::timestamp)=13 Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 ...