Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么是RuntimeError?#include<iostream> #include<stdio.h> #include<algorithm> #include<vector> #include<set> using namespace std; const int Max = 510; vector<int> g[Max]; set<int> art; int n; int seqNum; int pre[Max]; int low[Max]; int artNum; void input() { int head, tail; char c; while(true) { scanf("%d%c", &head, &c); if(!head) break; while(true) { scanf("%d%c", &tail, &c); g[head].push_back(tail); g[tail].push_back(head); if(c == '\n') break; } } } void dfs(int v) { int min; min = pre[v] = ++seqNum; for(int i=0; i<g[v].size(); i++) { int child = g[v][i]; if(!pre[child]) { dfs(child); if(low[child] < min) min = low[child]; if(low[child] >= pre[v]) art.insert(v); } else { if(min > pre[child]) min = pre[child]; } } low[v] = min; } void articulation() { artNum = 0; seqNum = 1; pre[1] = 1; for(int i=2; i<=n; i++) pre[i] = 0; dfs(g[1][0]); artNum = art.size(); if(seqNum < n) { artNum ++; for(int i=0; i<=g[1].size(); ++i) if(!pre[g[1][i]]) dfs(g[1][i]); } } int main() { while(cin >> n && n) { input(); if(n == 1) printf("0\n"); else { articulation(); art.clear(); printf("%d\n", artNum); for(int i=0; i<Max; i++) g[i].clear(); } } system("pause"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator