Floyd 无向图模板

这是无向图的

void Floyd()
{
    memset(v, 0x3f, sizeof v);
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
        v[i][j] = map[i][j];
    for(int k = 1; k <= n; k++)
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= n; j++)
            v[i][j] = v[j][i] =min(v[i][j], v[i][k]+v[k][j]);
}
时间: 2024-11-08 21:51:37

Floyd 无向图模板的相关文章

Floyd算法模板

Floyd可以求出任意两点间的最短距离,代码也相对简单,对于稀疏图来说效率也还是不错的,但由于三个for循环导致时间复杂度较高,不适合稠密图. Floyd算法模板(精简版): void Floyd() { int dist[maxn][maxn]; // dist存储i到j的最短距离 for(int k = 1; k <= n; k++) for(int i = 1;i <= n; i++) for(int j = 1; j <= n; j++) if(dist[i][k] + dist

spfa floyd 最短路径模板

#include <stdio.h> #include <queue> #include <iostream> using namespace std; #define INF 0xfffff //因为为了辨别是否有负权,所以INF不能开太大 #define MAX 1100 int dist[MAX], pre[MAX], path[MAX][MAX]; bool sign[MAX]; void initialize(int n) //初始化 { for(int i=

最短路--floyd算法模板

floyd算法是求所有点之间的最短路的,复杂度O(n3)代码简单是最大特色 1 #include<stdio.h> 2 #include<string.h> 3 4 const int maxn=105; 5 const int INF=0x3f3f3f3f; 6 int ma[maxn][maxn],n; 7 8 inline int min(int a,int b){return a<b?a:b;} 9 inline int max(int a,int b){return

Floyd算法模板(多源最短)

1 /* 2 INPUT 3 4 5 7 12 6 1 2 24 7 1 3 8 8 1 4 15 9 2 5 6 10 3 5 7 11 3 6 3 12 4 7 4 13 5 7 9 14 6 5 2 15 6 7 3 16 6 4 5 17 7 2 3 18 19 5 20 1 2 21 3 6 22 1 7 23 4 4 24 3 7 25 26 27 OUTPUT 28 29 1 to 2 need 17 30 3 to 6 need 3 31 1 to 7 need 14 32 4

Floyd 模板 &amp; [FZYZOJ 1318] 最短路

就当做一个Floyd的模板来练练手吧 P1318 -- [NOIP福建夏令营]最短路 时间限制:1000MS 内存限制:131072KB Description 给出N个点,M条无向边的简单图,问所有点对之间的最短路. Input Format 第1行两个正整数N,M(N<=100,M<=5000) 下面M行,每行3个正整数x, y, w,为一条连接顶点x与y的边权值为w.(x<=n,y<=n,w<=1000) Output Format 包括N行,每行N个数,第i行第j个数

最短路的几种算法及其优化(模板)

一.Dijkstra 算法 dijkstra算法适用于边权为正的情况,求单源最短路,适用于有向图和无向图 模板伪代码: 清除所有点的标号 设d[0]=0,其余d[i]=INF: 循环n次{ 在所有未标记的节点中,寻找d[i]最小的点x 给x做标记 对于从x出发的所有边(x,y)更新d[y]=min(d[y],d[x]+w[x,y]); } memset(v,0,sizeof(v)); for(int i=0;i<n;++i) d[i]=(i==0?0:INF); for(int i=0;i<n

HDU1869 六度分离 【Floyd】

六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4213    Accepted Submission(s): 1718 Problem Description 1967年,美国著名的社会学家斯坦利·米尔格兰姆提出了一个名为"小世界现象(small world phenomenon)"的著名假说,大意是说,任何2个素

8月12日————最短路

这个写的很好:http://blog.csdn.net/zhongyanghu27/article/details/8221276 dijkstra算法: 先给出一个无向图 用Dijkstra算法找出以A为起点的单源最短路径步骤如下 算法模板: void dijkstra(int x) { int i,j; memset(vis,0,sizeof(vis)); for( i=0;i<= max_city;i++ ) dis[i] = map[x][i]; dis[0] = 0; for( i=1

图论中的sb错误集锦

1.floyd--jzyzoj1213 最优乘车 策略非常简单,就是建立权值为1的边就好了,然而处理数据的时候翻了个sb错误: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 using namespace std; 6 #define MAX 510 7 int m,n,a[510][510],queue[51000]; 8 string s[