JZOJ A組 郵遞員

2021-09-11 18:16:29 字數 1240 閱讀 7449

郵局需要你來幫助他們為某個郵遞員設計出一條能夠穿過那遙遠鄉村的所有村子和小路至少一次的郵路(輸入資料將會保證這麼一條路是一定存在的)。

但是,每條路線都是有乙個花費的。各個村子裡的村民希望郵遞員到達他們村子的時間越早越好。因此,各個村子裡的人們採用了一些措施:假設第i號村子是郵遞員在他的郵遞路線上到達的第k個不同的村子。如果k<=w( i ),那麼這個村子的村民就會付給郵局w( i )-k歐元。當然,如果k>w(i),郵局也同意付k- w( i )歐元給這個村子,重複經過村子不重複收費。此外,郵遞員每經過一條小路,郵局也要付給郵遞員1歐元作為補貼。

現在有n個村子,編號依次為1到n。郵局就位於1號村子,因此郵遞員的傳遞路線從這裡開始,也從這個村子結束。能夠離開每個村子的路口的數目一定是2,4或者8。這裡允許出現同樣的村子間存在多條小路,或者某條小路構成了乙個自環的情況。

你的任務是設計乙個路線使得郵局賺的錢最多(或者說賠的錢最少。如果有多種最優解,輸出字典序最小的。

第一行:兩個整數n,m,分別表示村子的數量和小路的數量。

接下來n行,每行乙個整數:w(i)(1≤w(i)<1 000)

接下來m行,每行兩個整數u,v,表示這條小路連線的村子的編號。

第一行:乙個整數k,你的程式所設計的路徑的長度

第二行:k+1個整數,v1,v2…vk+l,每個數之間用乙個空格隔開,表示你設計的路徑所經過的村子的編號,其中需要滿足v1=vk+1=1

6 7174

1020

52 4

1 52 1

4 53 6

1 61 3

71 2 4 5 1 3 6 1

【樣例說明】

【資料說明】

對於30%的資料,有n<=20

對於100%的資料,有n<=200;

可以發現,那些w是沒用的23333

其實題目就是要你找一條最長的尤拉迴路哈哈

所以直接dfs就可以a啦

#include#includeusing namespace std;

const int maxn=277;

int cnt,a[maxn][maxn],s[maxn],n,m;

void dfs(int x)

s[++cnt]=x;

}int main()

dfs(1);

printf("%d\n",cnt-1);

for(; cnt; cnt--) printf("%d ",s[cnt]);

}

郵遞員送信

題目描述 有乙個郵遞員要送東西,郵局在節點1.他總共要送n 1樣東西,其目的地分別是2 n。由於這個城市的交通比較繁忙,因此所有的道路都是單行的,共有m條道路,通過每條道路需要一定的時間。這個郵遞員每次只能帶一樣東西。求送完這n 1樣東西並且最終回到郵局最少需要多少時間。輸入輸出格式 輸入格式 第一...

郵遞員送信(最短路)

郵遞員送信 題目描述 有乙個郵遞員要送東西,郵局在結點1。他總共要送n 1樣東西,其目的地分別是2 n。由於這個城市的交通比較繁忙,因此所有的道路都是單行的,共m條道路,通過每條道路需要一定的時間。這個郵遞員每次只能帶一樣東西。求送完這n 1樣東西並且最終回到郵局最少需要多少時間。輸入檔案 輸入檔案...

YCOJ中國郵遞員問題

題目 description 乙個郵遞員從郵局出發,需要去 n 2個城市送信,送完信件以後回家。郵局在城市 1,家在城市 n,任意兩個城市之間都有道路,但是這些道路是單向,也就是說 a 到 b 和 b 到 a 的路徑長度不一定是一樣的。他必須經過每個城市一次,並且不能重複經過,最後回到家裡。現在要求...