山東省第七屆ACM省賽C題 Proxy

2021-09-12 23:18:48 字數 978 閱讀 5153

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演算法,但是敲出來好像樣例也過不了,但是時間已經到十二點多了,我們覺得一定要開始 題了,就先列印出 給小豪找下錯誤,所以我繼續開始敲 題 中間到了飯點 題其實理解了後就...