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:邻接矩阵v[30000][30000]开不出来怎么办?分享一个省空间的模拟存储方法~In Reply To:邻接矩阵v[30000][30000]开不出来怎么办?分享一个省空间的模拟存储方法~ Posted by:070220219 at 2010-08-18 10:26:53 > int head[MN*2],next[MN*2],node[MN*2]; > int level[MN]; > bool visit[MN]; > void addedge(int x,int y) > { > m++; > node[m]=y; > next[m]=head[x]; > head[x]=m; > } > void dfs(int x,int l) > { > level[x]=l; > visit[x]=true; > if(head[x]==-1) > return ; > for(int i=head[x];i!=-1;i=next[i]){ > int y=node[i]; > if(!visit[y]) > dfs(y,l+1); > } > } > while(scanf("%d",&n)!=EOF){ > m=0; > memset(head,-1,sizeof(head)); > for(int i=1;i<n;i++){ > scanf("%d%d",&x,&y); > addedge(x,y); > addedge(y,x); > } > memset(visit,false,sizeof(visit)); > dfs(1,1); //标记节点的层数,以1为跟。 > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator