好坎坷呢
第一次是因为 忘记 memset g 0x3f sizeof g
第二次又因为开大了 一直mle
#include <bits/stdc++.h>
using namespace std;
int n,m,t1,t2;
const int N = 3000;
int g[N][N];
int dist[N];
int st[N];
void dij()
{
memset(dist,0x3f,sizeof dist);
for(int i=1;i<=n;i++)
dist[t1] = 0;
for(int i=0; i<n-1; i++)
{
int t = -1;
for(int j=1;j<=n;j++)
{
if(!st[j]&&(t==-1||dist[t]>dist[j]))
t=j;
}
for(int j=1;j<=n;j++)
{
dist[j] = min(dist[j], dist[t] + g[t][j]);
}
st[t] = true;
}
}
int main()
{
cin>>n>>m>>t1>>t2;
memset(g,0x3f,sizeof g);
while(m -- )
{
int a,b,c;
cin>>a>>b>>c;
g[a][b] = g[b][a] =min(g[a][b],c);
}
dij();
cout<<dist[t2];
return 0;
}