Description

V11开了一家旅行社,众所周知现在商业竞争越来越激烈,为了更好地吸引消费者的眼球,v11决定制定到一条最短的旅游路线,路线的开始点和结束点必须是同一个地方。你的任务就是编写程序帮助v11寻找到这样的路线。

现在给出旅行路线图,图中有N个景点编号从1到N,有M条双向边编号从1到M。每条边包含三个数字A,B,C。表示这条路线连接景点A和景点B,他们之间的距离是C。为了简化问题,我们认为:每条旅游路线是一个至少包含三个点的简单回路。每条旅游路线的长度为它包含的所有边的距离之和。

现在的任务是:要求你编写程序寻找这样的最短路,给出它的路程长度,并输出同时存在有几个这样的最短路。

注意的是:

1.当两条最短路程中所经过的景点(不考虑顺序),完全相同时,才是相同的最短路程。否则,算作不同的最短路程。

2. 图的顶点序列中,除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫简单回路。(本题中将第一个顶点和最后一个顶点当作同一个景点)

3.本题中不存在自环。

Input

输入数据第一行包含一个整数T,表示测试数据的组数。对于每组测试数据:

第一行为两个整数n,m(1<n<100,1<m<5000),接下来m行,每行三个整数a,b,v(1<=a,b<=n,1<v<500),表示第i条路线连接景点A和景点B,距离是V。两个数字之间用空格隔开。

Output

对于每组测试数据:如果存在这样的最短路线,输出它的长度和不同的最短路线的个数。如果不存在则输出-1。两个数字之间用空格隔开,每组测试数据一行。

Sample Input

1
3 3
1 2 1
3 1 1
3 2 1

Sample Output

3 1

Hint

样例一中,我们可以从景点1出发的路线:1->2->3->1;

可以从景点2出发的路线:2->3->1->2;

同样也可以从景点3出发的路线:3->1->2->3;

我们认为这3条路线所经过的景点集合为{1,2,3}所以他们是相同的路线。

floyd变形找最小环

把数组的值都标记为0x3f3f3f3f,应该是相加的时候溢出了,找了一个半小时错误

#include<stdio.h>
#include<string.h>
#define INF 99999999
int main()
{int T;int n,m,u,v,w;int e[110][110];int f[110][110];scanf("%d",&T);while(T--){memset(e,0,sizeof(e));memset(f,0,sizeof(f));scanf("%d%d",&n,&m);for(int i=1; i<=n; i++)for(int j=1; j<=n; j++){e[i][j]=INF;f[i][j]=INF;}for(int i=0; i<m; i++){scanf("%d%d%d",&u,&v,&w);if(f[u][v]>w){e[u][v]=e[v][u]=w;f[u][v]=f[v][u]=w;}}int minn=INF;int sum=0;for(int k=1; k<=n; k++){for(int i=1; i<k; i++){for(int j=i+1; j<k; j++){if(e[i][j]+f[j][k]+f[k][i]<minn){minn=e[i][j]+f[j][k]+f[k][i];sum=1;}else if(e[i][j]+f[j][k]+f[k][i]==minn)sum++;}}for(int i=1; i<=n; i++){for(int j=1; j<=n; j++){if(e[i][j]>e[i][k]+e[k][j])e[i][j]=e[i][k]+e[k][j];}}}if(sum==0)printf("-1\n");elseprintf("%d %d\n",minn,sum);}return 0;
}

fzu 2090 旅行社的烦恼相关推荐

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

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

  2. 90后老板用低代码整顿旅行社,创2000万年收,他是怎么做到的?(真实)

    热爱旅游的92年成都小伙猴哥,大学毕业后开了一家旅行社,主要从事川藏.云南定制游服务. 从今年春节开始,国内各地旅游业开始复苏,向旅行社打电话咨询的人越来越多. 旅游的人多是好事,也是一种烦恼,因为咨 ...

  3. 三星电池正在获取使用模式_三星Galaxy S10系列超大电池持久动力,解决电量烦恼...

    在这个信息爆炸的时代,智能手机与移动支付几乎充斥着我们生活的每一个角落.手机上的电量一旦泛红见底,就会让人感到束手束脚.焦虑不安.确实,智能手机的普及以及锂电池技术发展的瓶颈,让人经常性的出现电量烦恼 ...

  4. fzu 2150 Fire Game 【身手BFS】

    称号:fzu 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部 ...

  5. 虚商烦恼多?不在怕的!你距离享受高效虚商控制台只差一步的距离

    摘要: 虚商烦恼多?不在怕的!你距离享受高效虚商控制台只差一步的距离 虚商自助服务平台 vco.console.aliyun.com/ 原文链接 本文为云栖社区原创内容,未经允许不得转载

  6. FZU 1686 神龙的难题(DLX反复覆盖)

    FZU 1686 神龙的难题 题目链接 题意:中文题 思路:每个1看成列,每个位置作为左上角的矩阵看成行.dlx反复覆盖就可以 代码: #include <cstdio> #include ...

  7. 直面问题,咱谈焦虑、谈烦恼、谈如何成长

    前天,看了一场极客时间的直播<直面问题,咱谈焦虑.谈烦恼.谈如何成长>,大名鼎鼎的左耳朵耗子陈皓老师亲自坐镇直播间,主要分享了以下四个问题: 1.技术人员如何面对自己的焦虑烦恼? 2.程序 ...

  8. 大厂程序媛的特殊烦恼:男朋友工资只有自己的60%,天天阴阳怪气!

    工资高有工资高的快乐,也有相应的烦恼. 一个大厂程序媛发帖吐槽:男朋友自从知道他的工资只有自己的60%之后,每天阴阳怪气,真让人不爽! 网友调侃楼主男朋友,不就是软饭硬吃吗?有什么大不了的? 许多人认 ...

  9. 安卓okhttp上传jason和图片_微信图片总是「已过期或被清理」?简单 3 招,可摆脱烦恼...

    微信图片总是「已过期或被清理」?简单 3 招可摆脱烦恼 除了文字.表格.PPT 和 PDF,大家日常办公中也常常和「图片文件」打交道. 于是,我们总碰到这样的问题: 1)图片文件太大,在线传输耗时,甲 ...

最新文章

  1. 使用Redis实现在线点赞系统
  2. [bzoj4590][Shoi2015]自动刷题机
  3. VTK:金字塔用法实战
  4. 全局变量-基本代码演练
  5. 数据结构—链表-单链表应用-拆分链表
  6. 12013.ADC779x采集芯片
  7. Android BottomNavigationBar导航栏
  8. ThinkPHP 3.2 DEMO案例系列【phpmailer批量发送邮件】
  9. java多线程中的调度策略
  10. Rhino(犀牛) 7.22安装教程附带安装包
  11. Java多线程系列--【JUC集合10】- ConcurrentLinkedQueue
  12. matlab三维网格绘图函数mesh、meshc、mesh、zmeshgrid、surf【matlab图行绘制五】
  13. 在几何画板上画椭圆可以根据椭圆第二定义
  14. 什么是南向接口和北向接口,南北流量和东西流量
  15. sql语句中count(*),count(1),count(id)区别详解
  16. H3C服务器web怎么修改密码,h3c路由器怎么修改密码_h3c路由器找回密码
  17. 无线网服务器端口是什么,无线路由器上的lan端口是什么意思?
  18. html导航栏悬停过渡,JS 实现导航栏悬停效果
  19. 18位身份证号编码规则最后一位
  20. idea方法模板注释,完美解决param与return

热门文章

  1. 利用Scrapy框架爬取前途无忧招聘信息
  2. Redis详解(六)渐进式rehash机制
  3. excel/csv文件单页最大能存多少行呢?
  4. 一分钟修改网页中的内容
  5. python123-Python基本语法元素 (第1周)-货币转换 I
  6. 【windows】各版本浏览器清理缓存步骤
  7. 基于VS2019 C++的跨平台(Linux)开发(1.3.3)——进程管理
  8. mysql 索引优缺点
  9. Maple使用(一):Maple转Latex
  10. 第一财经周刊封面文章:那些忧伤的年轻人