Floyed:NEEPUOJ3016六度分离

标签: Floyed 图论 NEEPUOJ 最短路
15人阅读 评论(0) 收藏 举报


一道图论求最短路问题,采用邻接矩阵存储。因为涉及到了所有数据的最短路,因此采用Floyed(复杂度n^3),邻接矩阵的最大值N也不大,题里指出是小于100的,不用考虑超时间的问题。

建立邻接矩阵,过一遍Floyed,因为是无向图,只需要遍历下三角矩阵中是否有超出7(中间最多6个人,即最大值为7)的值。如果有超过7的,立即终止遍历输出No,全部遍历完成没有发现,就输出Yes。

#include<stdio.h>
#include<stdlib.h>
void initialize(int max);
int matrix[100][100];
int main(int argc,char* argv[])
{
	int m,n;
	while(scanf("%d%d",&m,&n)!=EOF)
	{
		int i,j;
		initialize(m);
		while(n--)
		{
			scanf("%d%d",&i,&j);
			matrix[i][j]=matrix[j][i]=1;
		}
		int x,y,z,col=0;
		for(x=0;x<m;x++)
			for(y=0;y<m;y++)
				for(z=0;z<m;z++)
					if(matrix[y][z]>matrix[y][x]+matrix[x][z])
						matrix[y][z]=matrix[y][x]+matrix[x][z];
		for(x=1;x<m;x++)
		{
			for(y=0;y<x;y++)
				if(matrix[x][y]>7)
				{
					col=1;
					break;
				}
			if(col)
				break;
		}
		if(col)
			printf("No\n");
		else
			printf("Yes\n");
    }
	return EXIT_SUCCESS;
}
void initialize(int max)
{
	const int inf=1<<20;
	int i,j;
	for(i=0;i<max;i++)
		for(j=0;j<max;j++)
			if(i!=j)
				matrix[i][j]=matrix[j][i]=inf;
			else
				matrix[i][j]=matrix[j][i]=0;
	return;
}

查看评论

六度分离(最短路)(floyed算法)

六度分离 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...
  • qaz135135135
  • qaz135135135
  • 2016-08-04 15:19:38
  • 164

hdu1869—六度分离(floyed)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1869 六度分离 Time Limit: 5000/1000 MS (Java/Others...
  • jiangzhiyuan123
  • jiangzhiyuan123
  • 2017-05-27 16:14:31
  • 220

hdu1869 六度分离 (floyed模板题)

直接三种for循环~ 第一层循环表示在j和k之间插入一个人i, 说实话 很担心超时呢 `link[j][k]=min(link[j][k],link[j][i]+link[i][k]+1)`...
  • su20145104009
  • su20145104009
  • 2017-05-04 16:59:42
  • 1387

HDU - 1869 六度分离 (floyed)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1869点击打开链接 六度分离 Time Limit: 5000/1000 MS (Java/...
  • xuejye
  • xuejye
  • 2018-01-16 12:31:21
  • 76

HDU:1869 六度分离(floyd最短路径算法打表)

六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub...
  • zugofn
  • zugofn
  • 2016-08-04 21:01:05
  • 505

HDU1869 六度分离(Dijkstra算法)

本题为Dijkstra算法的简单变形,根据模板便可写出本题的AC代码,希望大家可以领悟到模板的重要性 下面是本渣渣的AC代码。#include #include #include #define i...
  • qq_32866009
  • qq_32866009
  • 2016-02-28 14:23:20
  • 341

HDU 1869 六度分离(简单Floyd)

HDU 1869 六度分离(简单Floyd) http://acm.hdu.edu.cn/showproblem.php?pid=1869 题意:给你N个人以及他们之间的M个关系,现在问你任意两个人之...
  • u013480600
  • u013480600
  • 2014-07-14 19:44:32
  • 721

六度分离(Six Degrees of Separation)理论

转自社会学吧早在上个世纪60年代,美国著名社会心理学家米尔格伦(Stanley Milgram)就提出了“六级分隔”(Six Degrees of Separation)的理论,并设计了一个连锁信的实...
  • xlvector
  • xlvector
  • 2006-11-14 09:13:00
  • 1051

hdu 1869 六度分离

点击打开链接hdu 1869 思路:最短路+floyd 分析: 1 题目是要求所有的数据能否满足“六度分离”,那么我们就想到所有点之间的最短距离。 2 应用floyd,如果两点之间...
  • cgl1079743846
  • cgl1079743846
  • 2012-10-19 22:58:16
  • 889

六度分离 弗洛伊德算法

此题是佛洛伊德算法的模板题目  给大家讲一下佛洛伊德算法 此算法是属于动态规划。d[i][j]表示i到ji到j的最短距离。i点到j点的距离假如有一点u是的i经过u到j点的距离比原来的直接到的距离更加短...
  • lw277232240
  • lw277232240
  • 2017-05-06 22:25:37
  • 161
    个人资料
    等级:
    访问量: 44
    积分: 54
    排名: 168万+
    文章分类
    文章存档