旅行社的烦恼
来源:互联网 发布:自贡网络广播电视台 编辑:程序博客网 时间:2024/04/27 18:07
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=35603#problem/E
代码:#include<stdio.h>#include<string.h>#define M 107#define inf 0x3f3f3fusing namespace std;int g[M][M],dis[M][M],path[M][M],pre[M];int n,m,num,mincircle,count;void init(){ for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { g[i][j]=dis[i][j]=inf; } g[i][i]=dis[i][i]=0; }}void dfs(int i,int j){ int k=path[i][j]; if(k==0) { pre[num++]=j; return ; } dfs(i,k); dfs(k,j);}void Floyd(){ mincircle=inf; for(int k=1; k<=n; k++) { for(int i=1; i<k; i++)//求环 for(int j=i+1; j<k; j++) { if(mincircle>dis[i][j]+g[i][k]+g[k][j]) { mincircle=dis[i][j]+g[i][k]+g[k][j]; num=0; pre[num++]=i; dfs(i,j); pre[num++]=k; count=1; } else if(mincircle==dis[i][j]+g[i][k]+g[k][j])//记录次数 count++; } for(int i=1; i<=n; i++)//求最短路 for(int j=1; j<=n; j++) if(dis[i][k]+dis[k][j]<dis[i][j]) { dis[i][j]=dis[i][k]+dis[k][j]; path[i][j]=k; } }}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); init(); int a,b,c; for(int i=1; i<=m; i++) { scanf("%d%d%d",&a,&b,&c); if(g[a][b]>c) { g[a][b]=g[b][a]=c; dis[a][b]=dis[b][a]=c; } } memset(path,0,sizeof(path)); Floyd(); if(mincircle==inf) printf("-1\n"); else printf("%d %d\n",mincircle,count); } return 0;}
- fzu_2090_旅行社的烦恼
- 旅行社的烦恼
- fzu 2090 旅行社的烦恼
- fzu——旅行社的烦恼
- 2090 旅行社的烦恼 (floyd 应用)
- fzu 2090 旅行社的烦恼【Floyd求最小环】
- FZU 2090 旅行社的烦恼 Floyd最小环求最短路
- [最小环 最小环计数 最大平均环 模板题] POJ 1734 Sightseeing trip & FZU 2090 旅行社的烦恼 & POJ 2949 Word Rings
- 天上掉馅饼?当心旅行社的“八大陷阱”
- 旅行社管理软件
- 我的烦恼---来自studio2005的烦恼
- 成长的烦恼归来
- 《成长的烦恼》介绍
- 信息多的烦恼
- eclipse的烦恼!
- 最近的烦恼
- 翻译的烦恼
- 刷新DBGrid的烦恼
- 文件操作
- jQuery 选择器大全
- 简单小例子学会企业内容管理 IBM CM API开发
- Xp系统优化 虚拟内存(5)
- 跟我一起写Makefile
- 旅行社的烦恼
- 内核新特性——Patch physical to virtual translations at runtime
- c++ 声明和定义的区别
- 常用内容
- fork和exec()函数族
- UVA 10616 Divisible Group Sums
- 隐性—显性知识转化技术
- 认识C/C++之字符串
- C指针原理(4)-AT&T汇编