poj2762 Going from u to v or from v to u?
2016-07-04 14:41
579 查看
对于任意两个点x,y要存在一条x->y或者y->x的路径。显然是缩点然后判断是不是一条链。
const int maxn = 1010; int n, m; vector<vector<int> > G; int dfn[maxn], low[maxn], depth; int belong[maxn], block; int in[maxn], mark[maxn]; stack<int> st; int head[maxn], pnt[maxn<<3], nxt[maxn<<3], ecnt; void addedge(int u,int v) { pnt[ecnt] = v, nxt[ecnt] = head[u], head[u] = ecnt++; } void tarjan(int u) { dfn[u] = low[u] = ++depth; st.push(u), mark[u] = 1; int Size = G[u].size(); for (int i = 0;i < Size;++i) { int v = G[u][i]; if (dfn[v] == 0) { tarjan(v); low[u] = min(low[v], low[u]); }else if (mark[v]) low[u] = min(low[u], dfn[v]); } if (dfn[u] == low[u]) { block++; while(true) { int x = st.top(); st.pop(); belong[x] = block; mark[x] = 0; if (x == u) break; } } return ; } int ans; void dfs(int u) { ans++; mark[u] = 1; for (int i = head[u]; ~i;i = nxt[i]) { int v = pnt[i]; if (!mark[v]) { // ans++; dfs(v); return ; } } } int main(int argc, const char * argv[]) { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); // clock_t _ = clock(); int t; cin >> t; while(t--) { scanf("%d%d", &n, &m); G.clear();G.resize(n + 2); int u, v; while(m--) { scanf("%d%d", &u, &v); G[u].push_back(v); } memset(dfn, 0,sizeof dfn), depth = block = 0; memset(mark, 0,sizeof mark); for (int i = 1;i <= n;++i) if (dfn[i] == 0) tarjan(i); memset(head, -1,sizeof head), ecnt = 0; memset(in, 0,sizeof in); for (int i = 1;i <= n;++i) { for (int j = 0;j < G[i].size();++j) { u = i, v = G[i][j]; if (belong[u] != belong[v]) { addedge(belong[u], belong[v]); in[belong[v]]++; } } } ans = 0; for (int i = 1;i <= block;++i) if (in[i] == 0) {dfs(i);break;} if (ans == block) puts("Yes"); else puts("No"); } // printf("\nTime cost: %.2fs\n", 1.0 * (clock() - _) / CLOCKS_PER_SEC); return 0; }
相关文章推荐
- 求有向图强连通分量:Trajan算法模板
- poj 1236 强连通分量+缩点
- 例题5.7 等价性证明 LA4287
- 例题5.8 最大团 UVa11324
- 【有向图强连通分量(SCC)】
- UVA 10731 Test (scc)
- 【BZOJ2140】稳定婚姻【SCC】【二分图完备匹配】
- 图论 SCC(CCF高速公路)
- SQL Server 2008的安装
- 分享exchange 2007系列之三: Windows 2008平台Exchange 2007 SP1 SCC实现整理
- 【训练题】强连通分量缩点
- UVA11324 The Largest Clique 强连通分量缩点+有向无环图最大点权和
- hdu1827 Summer Holiday(scc应用)
- 求解有向图的强连通分量的SCC问题---POJ 2186 Popular Cows
- Spring Cloud项目实践【2 项目环境搭建】
- codeforces 894 E(scc + dp)
- 基本图论算法--《算法导论》
- POJ-2186 Popular Cows (SCC 强连通分量)
- POJ1904 King's Quest SCC
- 【图论·强连通分量scc】hdu6072Logical Chain