題解 洛谷P1407 國家集訓隊 穩定婚姻

2022-07-02 17:12:13 字數 1109 閱讀 4386

題面

很好的\(tarjan\)練習題。

主要講一下如何建圖。

先用\(stl \ map\)把每個人的名字對映成數字。

輸入第\(i\)對夫妻時把女性對映成\(i\),把男性對映成\(i+n\)。

輸入相互喜歡過的情侶時將男性向女性連邊。

然後\(tarjan\)判斷\(i\)與\(i+n\)是不是在同乙個強連通分量裡即可。

今天是七夕節誒

#include #include #include #include #include #include #include #include #include #define gi gi

#define itn int

#define file(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout)

using namespace std;

inline int gi()

while (c >= '0' && c <= '9')

return f * x;

}map ap; //map對映

int n, m, ans, sum, low[100003], dfn[100003], num, tot, head[100003], ver[100003], nxt[100003], sy[100003];

int cnt, sta[100003], vis[100003], kok;

inline void add(int u, int v)

void tarjan(int u)//tarjan過程

else if (vis[v]) low[u] = min(low[u], dfn[v]);

} if (dfn[u] == low[u])

while (y != u); }}

int main()

m = gi();

for (int i = 1; i <= m; i+=1)

for (int i = 1; i <= 2 * n; i+=1)

for (int i = 1; i <= n; i+=1)

return 0;

}

洛谷P1407 國家集訓隊 穩定婚姻

題目大意 有 n 對夫妻和 m 對情人,如果一對情人中的兩人都離婚了,那麼他們可以結為夫妻。對於每一對夫妻,若他們離婚後所有人依然可以結婚,那麼就是不安全的,否則是安全的。問每一對夫妻是否安全。題解 考慮 tarjan 縮點。把圖轉成有向圖,夫妻之間 g b 情人之間 b g tarjan 縮點,最...

P1407 國家集訓隊 穩定婚姻

國家集訓隊 穩定婚姻 嚴重懷疑這道題是用來虐狗的 給出 2 times n 個點,n 對點之間的關係 1 以及 m 對點的之間的關係 2 倘若有兩對滿足關係 1 的點能重新組成兩對滿足關係 2 的點,就輸出unsafe,否則輸出safe。同時題目中的點也分為兩類,一種是 男性 節點,一種是 女性 節...

題解 洛谷 P1935 國家集訓隊 圈地計畫

還是那個經典trick 最大價值 總價值 最小花費 每個位置都是二選一,考慮乙個魚刺型建圖。然後就是需要描述乙個,如果 x 選了第 p 種方案,那麼如果它的鄰點也選了第 p 種方案,就有 c 的代價,也就是有一條 c 流量的邊需要割掉。但是如果直接 s 連向每個格仔的邊流量為 a 每個格仔流向 t ...