辅导笔记(6):Floyed算法

#include<iostream>

#include <cmath>

#include<cstdio>

#include <bits/stdc++.h>

#define N 101

#define _for(i,a,b)  for(int i=(a);i<=(b);i++)

using namespace std;

struct point {

int x,y;

}p[N];

double g[N][N];

int main()

{

int n,i,j,k,m,a,b,s,t;

cin>>n; //n个点

_for(i,1,n)

  cin>>p[i].x>>p[i].y;

 

  _for(i,1,n)  //初始化图数组

    _for(j,1,n) {

    if(i==j)  g[i][j]=0;

    else g[i][j]=999999999;

  }

 

cin>>m;//m条边

_for(i,1,m) {

cin>>a>>b; //a,b两个点之间有直接关系

int d;

d=(p[a].x-p[b].x)*(p[a].x-p[b].x)+(p[a].y-p[b].y)*(p[a].y-p[b].y);

g[a][b]=g[b][a]=sqrt(d); //建立图关系

}

// _for(i,1,n) {  //输出 图数组

//     _for(j,1,n) {

//     cout<<g[i][j]<<"      ";

//     }

//     cout<<endl;

// }

//应用弗洛伊德算法

 

cin>>s>>t; //输入原点s,目标点t

_for(k,1,n)

  _for(i,1,n)

      _for(j,1,n)

        if(g[i][j]>g[i][k]+g[k][j])

          g[i][j]=g[i][k]+g[k][j];

printf("%.2lf",g[s][t]);

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,437评论 0 2
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    医学工程与科学园地阅读 1,249评论 0 1
  • 浏览器---------request------ > 服务器 然后服务器set-cookie 生成一个ses...
    砺豪阅读 185评论 0 0
  • [别样生活,万卷书万里路]2018年5月22日,连续1000天阅读日志第294篇。 最近的生活,似乎有点手忙脚乱!...
    颜玉读书阅读 1,625评论 14 23
  • 没有大城市的高楼大厦,留给你的只有阡陌小道。没有大城市的喧嚣笛鸣,留给你的只有恬静。没有大城市的繁华,留给你的...
    16a28421fe1a阅读 157评论 0 4