在乙個地圖上有n個地窖(n≤200),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向大序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任意一處開始挖地雷,然後沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使他能挖到最多的地雷。
第一行:地窖的個數;
第二行:為依次每個地窖地雷的個數;
下面若干行:
xi yi //表示從xi可到yi,xi最後一行為"0 0"表示結束。
k1-k2−…−kv //挖地雷的順序 挖到最多的雷。
65 10 20 5 4 5
1 21 4
2 43 4
4 54 6
5 60 0
3-4-5-634
#include usingnamespace
std;
int zuida_id=0
;int k=0
;int output(int i,int*c)
output(c[i],c);
c[++k]=i;
return0;
}intmain (); //
初始狀態為 0, i到j有路則改為 1
int c[n+1]=; //
先記錄每個地窖最優前驅,後用來儲存路徑
//輸入每個地窖包含地雷
for(int i=1;i<=n;i++)
//複製
for(int i=1;i<=n;i++)
//輸入是否通路
while(1
)
//尋找最優解
for(int i=1;i<=n;i++)}}
}int zuida=max[1
];
for(int i=2;i<=n;i++)
}output(zuida_id,c);
if(n==1) c[1]=1
; // 如果只有乙個地窖,它沒有前驅c[1]=0,可是輸出路徑時要輸出1
for(int i=1;i<=k;i++)
cout
return0;
}
挖地雷(動態規劃 輸出路徑)
時間限制 1000 ms 記憶體限制 65536 kb 在乙個地圖上有n個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向在序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任一處開始挖地雷,...
2018寒假集訓 Day2 動態規劃 挖地雷
挖地雷 mine 在乙個地圖上有n 個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且從編號小的地窖通向編號大的地窖。某人可以從任一處開始挖地雷,然後沿著指出的連線往下挖 僅能選擇一條路徑 當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使他能挖...
第九章 動態規劃 1262 例9 6 挖地雷
題目描述 在乙個地圖上有n個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向在序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任一處開始挖地雷,然後沿著指出的連線往下挖 僅能選擇一條路徑 當...