1649 齊頭並進 兩次最短路

2021-08-15 13:14:12 字數 2043 閱讀 9604

1649 齊頭並進

codeforces

基準時間限制:1 秒 空間限制:131072 kb 分值: 10

難度:2級演算法題

在乙個叫奧斯汀的城市,有n個小鎮(從1到n編號),這些小鎮通過m條雙向火車鐵軌相連。當然某些小鎮之間也有公路相連。為了保證每兩個小鎮之間的人可以方便的相互訪問,市長就在那些沒有鐵軌直接相連的小鎮之間建造了公路。在兩個直接通過公路或者鐵路相連的小鎮之間移動,要花費乙個小時的時間。

現在有一輛火車和一輛汽車同時從小鎮1出發。他們都要前往小鎮n,但是他們中途不能同時停在同乙個小鎮(但是可以同時停在小鎮n)。火車只能走鐵路,汽車只能走公路。

現在請來為火車和汽車分別設計一條線路;所有的公路或者鐵路可以被多次使用。使得火車和汽車盡可能快的到達小鎮n。即要求他們中最後到達小鎮n的時間要最短。輸出這個最短時間。(最後火車和汽車可以同時到達小鎮n,也可以先後到達。)

樣例解釋:

在樣例中,火車可以按照

3⟶4

行駛,汽車 1⟶

2⟶4

按照行駛,經過

2小時後他們同時到過小鎮4。

input

單組測試資料。

第一行有兩個整數n 和 m (2≤n≤400, 0≤m≤n*(n-1)/2) ,表示小鎮的數目和鐵軌的數目。

接下來m行,每行有兩個整數u 和 v,表示u和v之間有一條鐵路。(1≤u,v≤n, u≠v)。

輸入中保證兩個小鎮之間最多有一條鐵路直接相連。

output

輸出乙個整數,表示答案,如果沒有合法的路線規劃,輸出-1。
input示例

4 2

1 33 4

output示例

2
思路:不會同時到乙個地方。 注意m = 0 輸出-1 和 m = (n-1)*n/2 時輸出-1,否則會re(乙個沒有鐵路,乙個沒有公路)
code:
#include #define inf 12345678

using namespace std;

const int ax = 4e2 + 6;

int g[ax][ax];

int g2[ax][ax];

int p[ax];

int dis[ax];

int n , m ;

void init( int v0 )

} for( int i = 1 ; i <= n ; i++ )

memset(p,0,sizeof(p));

dis[v0] = 0;

p[v0] = 1;

}void init2( int v0 )

} for( int i = 1 ; i <= n ; i++ )

memset(p,0,sizeof(p));

dis[v0] = 0;

p[v0] = 1;

}void dijista1( int v0 )

}} int index , minus = inf;

for( int i = 1 ; i <= n ; i++ )

} } k = index;

p[k] = 1; }}

void dijista2( int v0 )

}} int index , minus = inf;

for( int i = 1 ; i <= n ; i++ )

} } k = index;

p[k] = 1; }}

int main()else

if( m == (n-1)*n/2 )

dijista1(1);

int a = dis[n];

init2(1);

for( int i = 1 ; i <= n ; i++ )

}} dijista2(1);

int b = dis[n];

if( a == inf || b == inf )else

} return 0;

}

51Nod 1649 齊頭並進(最短路)

題目鏈結 在乙個叫奧斯汀的城市,有n個小鎮 從1到n編號 這些小鎮通過m條雙向火車鐵軌相連。當然某些小鎮之間也有公路相連。為了保證每兩個小鎮之間的人可以方便的相互訪問,市長就在那些沒有鐵軌直接相連的小鎮之間建造了公路。在兩個直接通過公路或者鐵路相連的小鎮之間移動,要花費乙個小時的時間。現在有一輛火車...

51Nod 1649 齊頭並進(最短路)

題目鏈結 在乙個叫奧斯汀的城市,有n個小鎮 從1到n編號 這些小鎮通過m條雙向火車鐵軌相連。當然某些小鎮之間也有公路相連。為了保證每兩個小鎮之間的人可以方便的相互訪問,市長就在那些沒有鐵軌直接相連的小鎮之間建造了公路。在兩個直接通過公路或者鐵路相連的小鎮之間移動,要花費乙個小時的時間。現在有一輛火車...

1649 齊頭並進 水

1649 齊頭並進 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 在乙個叫奧斯汀的城市,有n個小鎮 從1到n編號 這些小鎮通過m條雙向火車鐵軌相連。當然某些小鎮之間也有公路相連。為了保證每兩個小鎮之間的人可以方便的相互訪問,市長就在那些沒有...