Elaxia的路線題解

2022-08-26 21:48:31 字數 713 閱讀 3958

求兩組最短路的最長公共路徑

先跑正圖反圖,

求出兩組的最短路徑樹,

然後在一組最短路徑樹上拓撲,

另一棵最短路徑樹當存在同樣的邊時更新dp,

#includeusing namespace std;

const int n=1500;

int n,m,s1,s2,t1,t2,p1,p2,p3,cnt=0,cnt2=0,ans=0,dp[n],rd[n],head[n],head2[n],dis[4][n];

struct edgee[n*n],f[n*n];

struct xd

}tmp,nw;

priority_queueq;

inline void add(int u,int v,int w)

inline void add2(int u,int v,int w)

inline int read()

while(ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+(ch-48),ch=getchar();

return f*t;

}void dijkstra(int x,int y)

}}void tppx()

}memset(dp,0,sizeof(dp));

for(int i=cnt;i>=1;--i)

}int main()

洛谷P2149 Elaxia的路線

題目 圖論綜合題。首先我們需要求出所有在公共最短路上的邊,可以用預處理出最短路長度,然後列舉每一條邊,依次判斷即可。然後把這些邊建到乙個新圖里,跑dp就好了。此題的關鍵就是求出在公共最短路上的邊。include define n 7001011 using namespace std int n,m...

航空路線 題解

一道既可以dp又可以網路流的題 戳首先為了儲存狀態,最容易想到的就是狀態壓縮,但是資料範圍不允許我們壓縮,所以就要換思路。最簡單的,就會想到,我們並不關心狀態是什麼,而關心的是狀態是否合法。我們只要讓當前這個dp是合法的,他的轉移是合法的,他的轉移又不會影響到他已經合法的狀態,那麼這樣就可以了。那麼...

題解 航空路線問題

乙個點有兩種用法,但是只能選一種用,直接把乙個點拆掉並且連一條容量為1的邊就成功限制。將乙個點拆為兩個點,乙個入點乙個出點,入點到出點連一條費用為 inf 的邊,跑費用流,最終答案就是 dfrac 輸出方案隨便弄一下就好了。注意考慮邊界情況!1 n 不連通 費用流不能跑負環。spfa能跑什麼費用流就...