求兩組最短路的最長公共路徑
先跑正圖反圖,
求出兩組的最短路徑樹,
然後在一組最短路徑樹上拓撲,
另一棵最短路徑樹當存在同樣的邊時更新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能跑什麼費用流就...