題目描述
給定一張航空圖,圖中頂點代表城市,邊代表兩個城市間的直通航線。現要求找出一條滿足下述限制條件的且途經城市最多的旅行路線。
從最西端城市出發,單向從西向東途經若干城市到達最東端城市,然後再單向從東向西飛回起點(可途經若干城市)。
除起點城市外,任何城市只能訪問一次。
對於給定的航空圖,試設計乙個演算法找出一條滿足要求的最佳航空旅行路線。
輸入格式
第一行有兩個正整數 nn
n 和 vv
v,nn
n 表示城市數,vv
v 表示直飛航線數。
接下來的 nn
n 行中每一行是乙個城市名,可乘飛機訪問這些城市。城市名出現的順序是從西向東。也就是說,設 i,ji,ji,
j 是城市表列中城市出現的位置次序,當 i>ji>j
i>
j 時,表示 城市 ii
i在城市 jj
j 的東邊,而且不會有兩個城市在同一條經線上。城市名是乙個長度不超過 151515
的字串,串中的字元可以是大小寫字母或阿拉伯數字。例如,agr34\textag
r34 或 bel4\textbe
l4。再接下來的 vv
v 行中,每行有兩個城市名,中間用空格隔開,如 city1 city2\textci
ty1c
ity2
表示 city1\textci
ty1 到 city2\textci
ty2 有一條直通航線,從 city2\textci
ty2 到 city1\textci
ty1 也有一條直通航線。
輸出格式
輸出最佳航空旅行路線。
第一行是旅行路線中所訪問的城市總數 mmm。
接下來的 m+1m+1m+
1 行是旅行路線的城市名,每行乙個。首先是出發城市名,然後按訪問順序列出其它城市名。注意,最後一行(終點城市)的城市名必然是出發城市名。如果有多組最優解,輸出任意一組均可;如果問題無解,則輸出no solution!
。
樣例樣例輸入
8 9
vancouver
yellowknife
edmonton
calgary
winnipeg
toronto
montreal
halifax
vancouver edmonton
vancouver calgary
calgary winnipeg
winnipeg toronto
toronto halifax
montreal halifax
edmonton montreal
edmonton yellowknife
edmonton calgary
樣例輸出
7
vancouver
edmonton
montreal
halifax
toronto
winnipeg
calgary
vancouver
最小費用最大流,重要的是路徑的輸出。
#include#include#include#include#includeusing namespace std;
#define swap(a,b)
const int maxm = 10005;
const int inf = 1e9 + 7;
mapp;
struct node
edge[maxm];
int head[maxm], vis[maxm], pre[maxm], dis[maxm];
int cnt, n, m, s, t, ans = 0;
char str[105][25], ch[25], sh[25];
void init()
void add(int u, int v, int w, int cost)
int bfs()
} }if (dis[t] == inf) return 0;
return 1;
}int mcmf()
return flow;
}void prin(int u, int n) }}
int main()
add(s, 1, 2, 0);
add(n * 2, t, 2, 0);
for (i = 1;i <= m;i++)
if (mcmf() != 2)
printf("%s", str[1]);
prin(1, n);
puts(str[1]);
return 0;
}
網路流24題 航空路線問題
題目描述 給定一張航空圖,圖中頂點代表城市,邊代表 2 城市間的直通航線。現要求找出一條滿足下述限制條件的且途經城市最多的旅行路線。1 從最西端城市出發,單向從西向東途經若干城市到達最東端城市,然後再單向從東向西飛回起點 可途經若干城市 2 除起點城市外,任何城市只能訪問 1 次。從東到西到達乙個點...
網路流24題 航空路線問題
乙個點只能經過一次 拆點,連流量為1,費用為0的邊。最多能經過多少城市 最大費用流。兩個點之間有一條路線 從u 連向v。這種題一般都這樣建邊 需要注意的一點是 第二個測試點它的最佳方案是從1到n然後再到1 所以不能對於每條可行的線路的容量設定成1,這樣的話對於這種情況就無法回來了qwq ifndef...
網路流24題 航空路線問題
時空限制1000ms 128mb 給定一張航空圖,圖中頂點代表城市,邊代表 2 城市間的直通航線。現要求找出一條滿足下述限制條件的且途經城市最多的旅行路線。1 從最西端城市出發,單向從西向東途經若干城市到達最東端城市,然後再單向從東向西飛回起點 可途經若干城市 2 除起點城市外,任何城市只能訪問 1...