T24412 Cup 182 3 洞穴之旅

2022-08-13 01:24:12 字數 1460 閱讀 2317

這道題在poj2762有,這個出題人直接翻譯弄過來了。。。

弱連通的定義是:從u能到達v從v能到達u,則u和v這兩個點弱連通。

顯然如果是強連通分量就一定是弱連通分量啦,所以可以直接縮點弄掉。

縮點後的dag中,可能會不符合條件的不可能被我們縮掉。

那麼對於這個dag,發現只有兩個或多個邊連入某個點的話,就不符合這個條件。

所以對乙個新圖弄乙個toposort,一旦通過同乙個點刪邊的過程新增了兩個以上的點的話,就絕對不符合條件。

**:

#include#include#include#include#includeconst int maxn = 10005, maxm = 100005;

struct edges

e[maxm], e2[maxm];

int head[maxn], tot;

int head2[maxn], tot2;

int n, m;

int dfn[maxn], low[maxn], dtot;

bool vis[maxn];

int color[maxn], ctot;

int indegree[maxn];

std::stacks;

int read()

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

return s * ans;

}void init()

void link(int u, int v)

; head[u] = tot;

}void link2(int u, int v)

; head2[u] = tot2;

}void tarjan(int u)

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

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

int x = s.top(); s.pop();

vis[x] = false; color[x] = ctot;

}}bool toposort()

}if(cnt > 1) return false;

while(!q.empty())

}if(cnt > 1) return false;

}if(count == ctot) return true;

}int main()

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

//for(int i = 1; i <= n; i++) printf("%d\n", color[i]);

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

}if(toposort()) printf("yes\n");

else printf("no\n");

}return 0;

}

7 24校內交流賽 T1 T2

乙個腦洞很大的題,將輸入的所有數異或起來輸出就好了 話說我為什麼這麼喜歡用異或啊 結論題 當某個字串長度恰巧為3 k 1時,從它往下的第3 k 1行恰好只決定於這個字串的左右兩個端點的值 includeusing namespace std inline intread intn,l char a ...

考試T1護花

傳送門 這題的提議似乎有什麼問題,只要約翰選好了要抓那頭牛,他就不會吃草了,站在原地傻等?這題就是貪心,但在用cmp中比較單位時間吃草數量時,要用double型,不然可能會有點一樣。還有就是主要的思路 設x,y是兩頭牛,如果後送y牛損失的花少於後送x牛損失的花 即x.t x.d x.t y.t y....

分塊隨筆T1

時間限制 1 sec 記憶體限制 128 mb 提交 解決 提交 討論版 大家都知道小z的課總是十分快的 鬼知道為什麼 然後我們阿m同學總是在上課時處於神遊狀態亦或是休眠狀態,所以她對小z到底講了什麼是一無所知。然而,小z總是很壞地打斷阿m的休眠狀態,並問她問題。作為阿m的開黑好夥伴,你當然不希望阿...