标签:des style blog http color java os io for
5 5 1 2 3 4 0 6 2 1 3 5 4 6 2 0 0
1 2
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <climits> 7 #include <vector> 8 #include <queue> 9 #include <cstdlib> 10 #include <string> 11 #include <set> 12 #include <stack> 13 #define LL long long 14 #define pii pair<int,int> 15 #define INF 0x3f3f3f3f 16 using namespace std; 17 const int maxn = 110; 18 int n,cnt,dfn[maxn],low[maxn]; 19 vector<int>g[maxn]; 20 bool iscut[maxn]; 21 void tarjan(int u,int fa) { 22 dfn[u] = low[u] = ++cnt; 23 int v,son = 0; 24 for(v = 0; v < g[u].size(); v++) { 25 if(!dfn[g[u][v]]) { 26 son++; 27 tarjan(g[u][v],u); 28 if(low[u] > low[g[u][v]]) low[u] = low[g[u][v]]; 29 if(low[g[u][v]] >= dfn[u]) iscut[u] = true; 30 } else if(g[u][v] != fa && low[u] > dfn[g[u][v]]) 31 low[u] = dfn[g[u][v]]; 32 } 33 if(fa < 0 && son == 1) iscut[u] = false; 34 } 35 int main() { 36 int u,v,ans; 37 while(scanf("%d",&n),n) { 38 for(int i = 0; i <= n; i++){ 39 g[i].clear(); 40 dfn[i] = low[i] = 0; 41 iscut[i] = false; 42 } 43 while(scanf("%d",&u),u) { 44 while(scanf("%d",&v)) { 45 g[u].push_back(v); 46 g[v].push_back(u); 47 if(getchar() == ‘\n‘) break; 48 } 49 } 50 ans = cnt = 0; 51 tarjan(1,-1); 52 for(int i = 1; i <= n; i++) 53 ans += iscut[i]; 54 printf("%d\n",ans); 55 } 56 return 0; 57 }
标签:des style blog http color java os io for
原文地址:http://www.cnblogs.com/crackpotisback/p/3935937.html