#include<iostream>
#include<unordered_set>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<math.h>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<bitset>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
const int N=510;
int n,m;
int g[N][N];
void floyd(){
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
//freopen("test.in","r",stdin);
//freopen("test.out","w",stdout);
cin>>n>>m;
memset(g,0x3f,sizeof g);
while(m--){
int a,b,c;
cin>>a>>b>>c;
g[a][b]=min(g[a][b],c);
}
floyd();
if(g[1][n]==0x3f3f3f3f) cout<<"-1"<<endl;
else cout<<g[1][n]<<endl;
return 0;
}
最短路算法——fordy
最新推荐文章于 2024-09-15 21:41:38 发布