HDU 4034 Graph(11年成都 Floyd运用)

转载 2016年08月31日 08:02:00

转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526       by---cxlove

题目:给出一个有向图,任意两点之间的最短路径,问是否 存在这样的图,如果存在最少有几条边

http://acm.hdu.edu.cn/showproblem.PHP?pid=4034 

对于第一问判断是否存在的话,用Floyd判断一下是否还能继续松弛即可。

对于第二问,枚举两个点i,j,然后判断是否存在一个中介点k,能组成两个点之间的最短路,如果能的话,说明i和j之间没有直接相连的边,因为题目要求边数最少

#include<iostream>
#include<cstdio>
#include<map>
#include<cstring>
#include<cmath>
#include<vector>
#include<queue>
#include<algorithm>
#include<set>
#define inf 110000
#define M 10005
#define N 200005
#define Min(a,b) ((a)<(b)?(a):(b))
#define Max(a,b) ((a)>(b)?(a):(b))
#define pb(a) push_back(a)
#define mem(a,b) memset(a,b,sizeof(a))
#define eps 1e-9
#define zero(a) fabs(a)<eps
#define LL long long
#define lson (step<<1)
#define rson (step<<1|1)
#define MOD 1000000007
using namespace std;
int n,path[105][105];
int main(){
	int t,cas=0;
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
				scanf("%d",&path[i][j]);
		printf("Case %d: ",++cas);
		bool flag=true;
		for(int k=0;k<n&&flag;k++)
			for(int i=0;i<n&&flag;i++)
				for(int j=0;j<n&flag;j++)
					if(i!=j&&i!=k&&j!=k)
						if(path[i][j]>path[i][k]+path[k][j])
							flag=false;
		if(!flag){puts("impossible");continue;}
		int ans=0;
		for(int i=0;i<n;i++)
			for(int j=0;j<n;j++){
				if(i==j) continue;
				bool mark=true;
				for(int k=0;k<n;k++)
					if(j!=k&&i!=k&&path[i][j]==path[i][k]+path[k][j]){
						mark=false;
						break;
					}
				if(mark) ans++;
			}
		printf("%d\n",ans);
	}
	return 0;
}


HDU - 4034 Graph (floyd变形)

题目大意:给出每个点之间的最短距离,问需要几条边才能形成这张图解题思路:100个点,果断floyd,接着判断 如果dp[i][j] > dp[i][k] + dp[k][j]表示这张图构建不了,因为...
  • L123012013048
  • L123012013048
  • 2015年08月01日 00:33
  • 502

hdu 4034 floyd Graph

题意:       给定有向图任意两点的最短距离。问,这样的图存在吗?存在的话输出这个图最少可以有的边长,不存在就impossible咯== 解:      比赛的时候看那么多人过,于是我们开始...
  • Julyana_Lin
  • Julyana_Lin
  • 2012年08月29日 09:35
  • 307

hdu 4034 Graph Floyd

。。。
  • xinag578
  • xinag578
  • 2015年08月17日 17:01
  • 297

hdu 4034 Graph (floyd)

Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Su...
  • ren_hui
  • ren_hui
  • 2013年07月26日 15:16
  • 400

HDU - 4034 Graph (Floyd)

GraphTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Subm...
  • w326159487
  • w326159487
  • 2017年05月10日 15:43
  • 82

hdu 4034 Graph(floyd)

hdu 4034 GraphDescription Everyone knows how to calculate the shortest path in a directed graph. In...
  • llx523113241
  • llx523113241
  • 2015年07月31日 19:21
  • 476

HDU 4034 Graph(Floyd变形)

HDU 4034 Graph(Floyd变形) http://acm.hdu.edu.cn/showproblem.php?pid=4034 题意:给你一个N个节点的有向图的最短距离矩阵,现在要你求出...
  • u013480600
  • u013480600
  • 2014年07月13日 20:58
  • 677

hdu 4034 Graph(逆向floyd)

floyd的松弛部分是 g[i][j] = min(g[i][j], g[i][k] + g[k][j]);也就是说,g[i][j] j, i->k, k->j的边)。 那么这个题很明显要逆向思考f...
  • diary_yang
  • diary_yang
  • 2013年09月13日 15:15
  • 871

HDU 4034 Graph floyd 最短路

H - Graph Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64u Submit Stat...
  • zp___waj
  • zp___waj
  • 2016年05月10日 14:29
  • 330

HDU 4034 Graph【最短路之floyd变形】

GraphTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Subm...
  • k_young1997
  • k_young1997
  • 2017年09月12日 13:44
  • 65
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 4034 Graph(11年成都 Floyd运用)
举报原因:
原因补充:

(最多只允许输入30个字)