首页 > 学院 > 开发设计 > 正文

cdoj 30 最短路 flyod

2019-11-06 07:14:26
字体:
来源:转载
供稿:网友

题目链接:

http://acm.uestc.edu.cn/#/PRoblem/show/30

题意:

题解:

直接floyd

代码:

#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst int INF = 0x3f3f3f3f;const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}//////////////////////////////////////////////////////////////////////////const int maxn = 100+10;int d[maxn][maxn];int main(){ int n,m; while(scanf("%d%d",&n,&m),n+m){ for(int i=0; i<=n; i++) for(int j=0; j<=n; j++) d[i][j] = INF; for(int i=0; i<m; i++){ int u,v,w; scanf("%d%d%d",&u,&v,&w); d[u][v] = d[v][u] = w; } for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) d[i][j] = min(d[i][j],d[i][k]+d[k][j]); cout << d[1][n] << endl; } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表