proxy
比賽前期讀題不順,不知道是最小生成樹還是最短路徑,好吧,其實我們最開始想的連最短路徑都不是
到了後期終於知道了題意。就是給你乙個圖,讓你求0節點到n+1節點的最短路徑,但不是讓你輸出最小權值,而是輸出在這個路徑上的最接近源點的那個節點。如果0到n+1的最短路上中間沒有其他節點了就輸出0,或者說如果0節點到n+1節點的距離為無窮大,就輸出-1;
比賽中想的是根據輸出最短路徑來直接獲得那個節點,奈何我只用過floyd,沒練過其他的,這道題n可以達到1000,果斷超時。到了後來看某大佬的部落格,發現了如下解法:我們反方向建圖,求n+1節點到0節點的最短路徑,同時我們在輸入的時候需要記錄哪些節點和0節點直接相連,最終的答案肯定就在這幾個點裡面,在求得最短路徑後,我們逐個判斷這些點哪個可以。就是看看dist[該點]+該點到0節點的線段距離 == dist[0]麼,是的話說明此點可能就是答案,因為我們要找的是最小的那個節點,所以這些點都要遍歷一遍。
#include
using namespace std;
const
int inf =
0x3f3f3f3f
;struct nodeedge[
20010];
int dist[
1010
],vis[
1010
],head[
1010
],ff[
20010][
2];int
spfa
(int s)}}
}}intmain()
}spfa
(n+1);
if(dist[0]
== inf)
cout <<
"-1"
<< endl;
else
}printf
("%d\n"
,miner==n+1?
0:miner);}
}}
山東省第七屆ACM程式設計競賽
sdutoj 3560 3570 水題 include include define mem a,x memset a,x,sizeof a using namespace std typedef long long ll const int n 100010 int a 5 int main re...
第七屆山東ACM省賽總結
省賽總結 比賽的第一天是打cccc網路賽,因為賽前找電腦的原因讓我比賽中的狀態很不好,雖然第一階段是水題在掌控範圍內,但是由於這個是團體賽,打不好會託隊友的後腿,還是各種緊張,開局就做的很不好,老是擔心會卡題,有句話說的好,怕什麼,來什麼,果然,我卡題了。卡在了划拳那個題,賽後我去看那個題,交了足足...
第七屆acm省賽總結
比賽過去很多天了,現在才開始寫。都有些忘了。然而 題寫好交上去之後tle了,我們分析了下可能是演算法不夠快,然後讓我上去敲了spfa演算法,但是敲出來好像樣例也過不了,但是時間已經到十二點多了,我們覺得一定要開始 題了,就先列印出 給小豪找下錯誤,所以我繼續開始敲 題 中間到了飯點 題其實理解了後就...