Partido de plata Vaca (Dijkstra)

Vínculo del título original, el título original
hace que el problema de cortocircuito primero más obvia de la plantilla a ser un poco difícil. . . . .
Más corto buscan el ganado de ida y vuelta en el camino más largo es de un solo sentido, por lo que puede medir el tiempo una forma de uso tabla de registros sobre el
regreso de las veces, si le preguntas a cada una granja a otra en el objetivo más corta demasiado tiempo por lo se puede invertir e ir a la carretera
a continuación es el código

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int map[1002][1002],dis[1002],way[1002];
int n,x,inf=999999;
void dijkstra()
{
    int book[1002],i,j,u;
    memset(book,0,sizeof(book));
    for(i=1;i<=n;i++)
        dis[i]=map[x][i];
    book[x]=1;
    for(i=1;i<n;i++)
    {
        int min=inf;
        for(j=1;j<=n;j++)
        {
            if(!book[j]&&dis[j]<min)
            {
                u=j;
                min=dis[j];
            }
        }
        book[u]=1;
        for(j=1;j<=n;j++)
        {
            if(!book[j]&&map[u][j]+dis[u]<dis[j])
                dis[j]=map[u][j]+dis[u];
        }
    }
}

int main()
{
    int m,i,j,a,b,t;
    while(~scanf("%d%d%d",&n,&m,&x))
    {
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
        {
            if(i==j)
                map[i][j]=0;
            else
                map[i][j]=inf;
        }
        while(m--)
        {
            scanf("%d%d%d",&a,&b,&t);
            if(map[a][b]>t)
                map[a][b]=t;
        }
        dijkstra();
        for(i=1;i<=n;i++)
            way[i]=dis[i];
        for(i=1;i<=n;i++)
            for(j=i+1;j<=n;j++)
            swap(map[i][j],map[j][i]);//反转
        dijkstra();
        int ans=0;
        for(i=1;i<=n;i++)
        {
            if(i!=x)
                ans=max(ans,way[i]+dis[i]);
        }
        printf("%d\n",ans);
    }
    return 0;
}
Publicado 17 artículos originales · ganado elogios 3 · Vistas 521

Supongo que te gusta

Origin blog.csdn.net/RUBGH/article/details/104855975
Recomendado
Clasificación