R19362595

    xiaoxiao2023-11-19  171

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; int w[2509][2509]; int dis[2509]; int num[2509]; int a[2509][6200]; int b[2509]; int que[5000]; int main() {     int m,n,s,e;     int h=0;     int t=1;     scanf("%d%d%d%d",&m,&n,&s,&e);     for(int i=1;i<=m;i++)         dis[i]=0x7fffffff/3;     for(int i=1;i<=m;i++)         for(int j=1;j<=m;j++)             w[i][j]=0x7fffffff/3;     int x,y,z;     for(int i=1;i<=n;i++)     {         scanf("%d%d%d",&x,&y,&z);         a[x][++num[x]]=y;         a[y][++num[y]]=x;         w[x][y]=w[y][x]=z;     }     dis[s]=0;     b[s]=1;     que[t]=s;     do     {         h++;         h=(h-1)P00+1;\\除数太小会出错;         int u=que[h];         b[u]=0;         for(int i=1;i<=num[u];i++)         {             if(dis[a[u][i]]>dis[u]+w[u][a[u][i]])             {                 dis[a[u][i]]=dis[u]+w[u][a[u][i]];                 if(b[a[u][i]]==0)                 {                     b[a[u][i]]=1;                     t++;                     t=(t-1)P00+1;                     que[t]=a[u][i];                 }             }             }     }while(h<=t);     printf("%d",dis[e]);     return 0; }

    最新回复(0)