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 |
Re:做了好几天了~~~~还是WA,请教高手帮我看看In Reply To:做了好几天了~~~~还是WA,请教高手帮我看看 Posted by:swpihchj at 2007-10-18 11:00:17 你的mins应该定义成局部变量,而不是全局变量 > #include <iostream> > using namespace std; > > //图定义 > int arc[101][101]={0}; > int visited[101]={0}; > int low[101] = {0}; > int counts=0; > int total[101]={0}; > int nodes=0; > int mins=0; > > int next(int v) > { > for(int i=arc[v][0];i<=nodes;i++) > { > if(arc[v][i] != 0) > { > arc[v][0] = i + 1; > return i; > } > } > > return 0; > } > > void DFS(int v0) > { > int p=0,w; > visited[v0] = mins = ++counts; > for(p=next(v0); p!=0;p=next(v0)) > { > w=p; > if(visited[w] == 0) > { > DFS(w); > if(low[w] < mins) > mins = low[w]; > if(low[w] >= visited[v0]) > total[v0]=1; > } > else if(visited[w] < mins) > mins = visited[w]; > } > low[v0] = mins; > } > > void Finds() > { > counts=1; > visited[1] = 1; > // low[1] = 1; > for(int i=2;i<=nodes;++i) > { > visited[i] = 0; > } > int p = next(1); > int v = p; > DFS(v); > > if(counts < nodes) > { > total[1]=1; > p=next(1); > while(p!=0) > { > v = p; > if(visited[v] == 0) > DFS(v); > p = next(1); > } > } > } > > int main() > { > int i,f,t,c=0; > char h; > scanf("%d",&nodes); > while(nodes!=0) > { > counts=0;mins=0; > for(i=0;i<=nodes;i++) arc[i][0]=1; > scanf("%d",&f); > while(f!=0) > { > while(scanf("%d%c",&t,&h)) > { > arc[f][t] = 1; > arc[t][f] = 1; > if(h=='\n') > break; > } > scanf("%d",&f); > } > > Finds(); > > for(i=1;i<=nodes;i++) > if(total[i]) > c++; > cout<<c<<endl; > c=0; > memset(total,0,sizeof(total)); > memset(low,0,sizeof(low)); > memset(visited,0,sizeof(visited)); > memset(arc,0,sizeof(arc)); > counts=0;mins=0; > scanf("%d",&nodes); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator