zoukankan      html  css  js  c++  java
  • ural Russian Pipelines(最短路)

    题意:给出N个点和M条有向边,求给出的s点到t点的最短路。

    思路:spfa,只是这题给出的是有向边,在存储的时候只存一条边就可以了,其他的和无向边一样。

    代码:

    View Code
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <math.h>
    #include <vector>
    #include <map>
    #define  N 505
    using namespace std ;
    
    int mp[N][N] , dis[N] , n ;
    bool vist[N] ;
    queue<int>q ;
    
    void bfs( int s , int t )
    {
        int x ;
        while( !q.empty()) q.pop() ;
        q.push( s ) ;
        vist[s] = true ;
    
        while( !q.empty())
        {
            x = q.front() ;
            q.pop() ;
            vist[x] = false ;
    
            for ( int i = 1 ; i <= n ; i++ )
            {
                if ( mp[x][i] && dis[i] < dis[x] + mp[x][i] )
                {
                    dis[i] = dis[x] + mp[x][i] ;
                    if( !vist[i] )
                    {
                        vist[i] = true ;
                        q.push( i ) ;
                    }
                }
            }
        }
        if ( dis[t] == 0 )
        {
            printf ( "No solution\n" ) ;
        }
        else
        {
            printf ( "%d\n" , dis[t] ) ;
        }
    }
    
    int main()
    {
        int  m , x , y , z , s , t ;
    
        while( scanf ( "%d%d" , &n , &m ) != EOF )
        {
            memset( mp ,  0 , sizeof( mp )) ;
            for ( int i = 0 ; i < m ; i++ )
            {
                scanf ( "%d%d%d" , &x , &y , &z ) ;
                mp[x][y] = z ;
            }
            scanf ( "%d%d" , &s , &t ) ;
            if ( s == t )
            {
                printf ( "0\n" ) ;
            }
            else
            {
                memset( dis , 0 , sizeof ( dis )) ;
                memset( vist , false , sizeof ( vist )) ;
    
                bfs( s , t ) ;
            }
        }
        return 0 ;
    }
  • 相关阅读:
    16-镜像命名的最佳实践
    15-RUN vs CMD vs ENTRYPOINT
    14-Dockerfile常用指令
    13-调试Dockerfile
    12-镜像的缓存特性
    11-Dockerfile构建镜像
    10-构建镜像
    09-镜像的分层结构
    08-base镜像
    07-镜像-最小的镜像
  • 原文地址:https://www.cnblogs.com/misty1/p/2951166.html
Copyright © 2011-2022 走看看