题目:对于一个有向图给出多起点和一个终点 问哪个起点到终点路径最短
1, directed ways 有向边
2,点有1000个 ,用floyd的话会超时
3,虽然是多起点,但只有一个终点,所以还是单一源点问题,用djikstra,终点看做原点
4,因为从终点寻起点,所以建图时要把所有的路反过来建
#include#include #include #include #include #include #include #define ll long long#define MAXN 1000000+50#define mst( x,a ) memset ( x ,a,sizeof ( x ) )using namespace std;const int inf = 0x3f3f3f3f ;struct edge{ int to; int w;};int ans_d[1005] ,vis[1005] ;int main ( ){ int n,m,en,st,t; while( ~scanf( "%d%d%d" ,&n ,&m ,&en)){ mst( ans_d,inf ); mst ( vis,0 ); vector e[1005]; for( int i=0 ; i ans_d[j]){ mn= ans_d[j]; mni=j; flag=0; } } if(flag) break; vis[mni]=1; int es=e[mni].size( ); for( int j=0 ; j