l3-011 直搗黃龍 (30 分)
本題是一部戰爭大片 —— 你需要從己方大本營出發,一路攻城略地殺到敵方大本營。首先時間就是生命,所以你必須選擇合適的路徑,以最快的速度占領敵方大本營。當這樣的路徑不唯一時,要求選擇可以沿途解放最多城鎮的路徑。若這樣的路徑也不唯一,則選擇可以有效殺傷最多敵軍的路徑。
輸入第一行給出 2 個正整數 n(2 ≤ n ≤ 200,城鎮總數)和 k(城鎮間道路條數),以及己方大本營和敵方大本營的代號。隨後 n-1 行,每行給出除了己方大本營外的乙個城鎮的代號和駐守的敵軍數量,其間以空格分隔。再後面有 k 行,每行按格式城鎮1 城鎮2 距離
給出兩個城鎮之間道路的長度。這裡設每個城鎮(包括雙方大本營)的代號是由 3 個大寫英文本母組成的字串。
按照題目要求找到最合適的進攻路徑(題目保證速度最快、解放最多、殺傷最強的路徑是唯一的),並在第一行按照格式己方大本營->城鎮1->...->敵方大本營
輸出。第二行順序輸出最快進攻路徑的條數、最短進攻距離、殲敵總數,其間以 1 個空格分隔,行首尾不得有多餘空格。
10 12 pat dby
dby 100
pta 20
pds 90
pms 40
tap 50
atp 200
lnn 80
lao 30
lon 70
pat pta 10
pat pms 10
pat atp 20
pat lnn 10
lnn lao 10
lao lon 10
lon dby 10
pms tap 10
tap dby 10
dby pds 10
pds pta 10
dby atp 10
pat->pta->pds->dby
3 30 210
思路:
就是最短路啦,開dis,cnt,peo陣列記錄最短距離,最大的城鎮數,最大的殲敵人數就好了
dijk**:
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef pairp;
const int inf=4e8;
const int n=215,mod=32767;
mapdui;
mapdui1;
int n,num[n];
int cost[n][n],dis[n],cnt[n],peo[n],tot[n];
int s=1,e,pre[n],vis[n];
void init()
}for(int i=1;i<=n;i++)
}void dijk()
else if(dis[i]==dis[v]+cost[v][i])
cout<=0;i--)
for(int i=1;i<=k;i++)
dijk();
print();
cout<spfa**:
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef pairp;
const int inf=4e8;
const int n=215,mod=32767;
mapdui;
mapdui1;
int n,num[n];
int dis[n],cnt[n],peo[n],tot[n];
int s=1,e,pre[n],vis[n],head[n];
int qq;
struct aedge[100034];
void init()
}void add(int from,int to,int cost)
void spfa()
}else if(dis[u]==dis[v]+edge[i].cost)
cout<=0;i--)
for(int i=1;i<=k;i++)
spfa();
print();
cout<}
L3 011 直搗黃龍
本題是一部戰爭大片 你需要從己方大本營出發,一路攻城略地殺到敵方大本營。首先時間就是生命,所以你必須選擇合適的路徑,以最快的速度占領敵方大本營。當這樣的路徑不唯一時,要求選擇可以沿途解放最多城鎮的路徑。若這樣的路徑也不唯一,則選擇可以有效殺傷最多敵軍的路徑。輸入格式 輸入第一行給出2個正整數n 2 ...
L3 011 直搗黃龍 多級最短路 spfa
時間限制 150 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 本題是一部戰爭大片 你需要從己方大本營出發,一路攻城略地殺到敵方大本營。首先時間就是生命,所以你必須選擇合適的路徑,以最快的速度占領敵方大本營。當這樣的路徑不唯一時,要求選擇可以沿途...
L3 011 直搗黃龍(最短路 dfs路徑回溯)
思路最短路 dfs路徑回溯,不難,但是我又被卡了,沒看出來最短距離相等時,路徑數應該是兩者相加 我記得我之前做這類的題目的時候也是這裡被卡,我真是豬腦子 oo 寫部落格紀念一下o o include include include include include define pii pair de...