/** GOKURI */ #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FNAME "magazine.txt" #define cin fin struct taxis { int a,b,c; }; bool operator<( const taxis& t1, const taxis& t2 ) { if( t1.a != t2.a ) return t1.a < t2.a; if( t1.b != t2.b ) return t1.b < t2.b; return t1.c < t2.c; } typedef taxis vert; typedef int len_t; typedef pair edge; typedef vector edges; typedef map graph; len_t dijkstra( graph& G, vert src, int N ) { set visited; priority_queue, greater > Q; Q.push( edge(0,src) ); while( !Q.empty() ) { edge c = Q.top(); Q.pop(); if( visited.count(c.second) ) continue; if( c.second.a==N || c.second.b==N || c.second.c==N ) return c.first; visited.insert( c.second ); edges& ne = G[c.second]; for(int i=0; i!=ne.size(); ++i) if( !visited.count(ne[i].second) ) Q.push( edge(c.first+ne[i].first, ne[i].second) ); } assert(false); } int main() { ifstream fin(FNAME); if(!fin) return -1; int N; cin >> N; while(N--) { // input int nLoc; cin >> nLoc; vector< vector > D( nLoc, vector(nLoc,0) ); for(int i=0; i>x; D[i][j] = D[j][i] = x; } // WF for(int k=0; k