MyException - 我的异常网
当前位置:我的异常网» C++ » ACM啊求最短距离的 老是异常

ACM啊求最短距离的 老是异常(2)

www.MyException.Cn  网友分享于:2013-02-20  浏览:12次

       cin >> N >> M ;//N个点M条线
       for( int i = 0 ; i <= N ; ++i )
       {
          minimum[i] = 1000000000 ;
          for( int j = 0 ; j <= N ; ++j )
            map[i][j] = 0 ;
       }
       
       for( int i = 1 ; i <= M ; ++i )
       {
          int u , v , w ;
          cin >> u >> v >> w ;
          map[u][v] = w ; 
          map[v][u] = w ;  
       }
       open.push ( Node ( 1 , 0 ));
        minimum[1] = 0 ;
       while( !open.empty () )
       {
          int beg , dis;
          beg = open.front ().beg ;
          dis = open.front ().dis ;
          open.pop ();
          if( beg == N )//已经是终点了
            continue ;
          for( int i = 1 ; i <= N ; ++i )
             if( ( map[beg][i] != 0 ) && ( map[beg][i] + dis < minimum[i] )) //找到节点
              {
                 open.push( Node( i ,map[beg][i] + dis ));
                 minimum[i] = map[beg][i] + dis;
              }
          
       }
       if( minimum[N] == 1000000000 ) 
         cout << "Case " << z << ": Impossible" << endl; 
       else
         cout << "Case " << z << ": "<< minimum[N] << endl;         
   }
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有