题目:
题解:
最短路模板
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<string>
#include<map>
#include<sstream>
#include<vector>
#include<ctime>
#include<list>
using namespace std;
int pos[2005][2005];
int dis[2005];
int vis[2005]={0};
int inf=0x3f3f3f3f;
int n;
void dij()
{
memset(dis,inf,sizeof(dis));
dis[1]=0;
for(int i=1;i<=n;i++)
{
int t=-1;
for(int j=1;j<=n;j++)
{
if((t==-1||dis[j]<dis[t])&&!vis[j]) t=j;
}
vis[t]=1;
for(int j=1;j<=n;j++)
{
dis[j]=min(dis[j],dis[t]+pos[t][j]);
}
}
}
int main()
{
int t;
cin>>t>>n;
memset(pos,inf,sizeof(pos));
while(t--)
{
int u,v,w;
cin>>u>>v>>w;
pos[u][v]=pos[v][u]=min(pos[u][v],w);
}
dij();
cout<<dis[n]<<endl;
return 0;
}