Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

刚在zoj上交也AC了

Posted by xiaolonghingis at 2006-09-06 20:28:49 on Problem 1470
In Reply To:谁能帮看看,实在是找不到错误,WA的郁闷阿。。。谢谢 Posted by:xiaolonghingis at 2006-09-06 20:24:33
> #include <iostream>
> #define MAX 4096
> using namespace std;
> int graph[1000][1000],num[1000],level[1000],uset[1000];
> int E[5000],L[5000],R[5000],pp[10000];
> int sum;
> bool visit[1100];
> inline bool RMQcmp(int i, int j)
> { 
>     return L[i] > L[j];
> }    
> int root(int v)
> {
>     if(uset[v] == v)
>       return v;
>     uset[v] = root(uset[v]);
>     return uset[v];
> } 
> int Union(int a,int b)
> {
> 	uset[uset[b]]=uset[a];
> 	return 0;
> }
> void RMQCreate()        
> { 
>      int f = MAX, t = MAX + sum - 1, i; 
>      for(i = 0; i < sum; ++i) 
>         pp[i+MAX] = i; 
>      for( ;f < t; f /= 2, t /= 2) 
>      { 
>         for(i = f; i < t ; i+= 2) 
>         { 
>             if( !RMQcmp(pp[i], pp[i+1]) ) 
>                 pp[i/2] = pp[i]; 
>             else pp[i/2] = pp[i+1]; 
>         } 
>         if(!(t&1)) pp[t/2] = pp[t]; 
>      } 
> } 
> int RMQFind(int ss, int ee) 
> { 
>     int k, f, t; 
>     ss += MAX, ee += MAX; 
>     k = !RMQcmp(pp[ss] ,pp[ee]) ? pp[ss] : pp[ee]; 
>     for( f = ss, t = ee; f < t; f/=2, t/=2) 
>     { 
>         if( !(f&1) && f + 1 < t && !RMQcmp(pp[f+1], k)) 
>             k = pp[f+1]; 
>         if( (t&1)  && t - 1 > f && !RMQcmp(pp[t-1], k)) 
>             k = pp[t-1]; 
>     } 
>     return k; 
> } 
> int dfs (int v,int l)
> {
>    E[sum++]=v;
>    level[v]=l;
>    for (int i=0;i<num[v];i++)
> 		if (!visit[graph[v][i]])
> 		{
> 			visit[graph[v][i]]=true;
> 			dfs(graph[v][i],l+1);
> 			E[sum++]=v;
> 		}
>    return 0;
> }
> main ()
> {
> 	int n,u,v,m,i,j;
> 	char a;
> 	while (scanf ("%d",&n)!=EOF)
> 	{
> 		for (i=1;i<=n;i++)  
> 		{
> 			uset[i]=i;
> 		    num[i]=0,visit[i]=false,R[i]=-1,level[i]=100000;
> 		}
> 		for (i=0;i<n;i++)
> 		{
> 			scanf("%d",&v);
> 			while(scanf("%c",&a)&&a!='(');
> 			scanf("%d",&m);
> 			while(scanf("%c",&a)&&a!=')');
> 			num[v]=m;
> 			for (j=0;j<m;j++)
> 			{
> 		        scanf ("%d",&graph[v][j]);
> 		        if (root(v)!=root(graph[v][j]))
> 		            Union(v,graph[v][j]);
> 			}
> 		}
> 		sum=0;
> 		visit[uset[v]]=true;
> 		dfs(uset[v],0);
> 		for (i=0;i<sum;i++)
> 		{
> 			L[i]=level[E[i]];
> 			if (R[E[i]]==-1)
> 			   R[E[i]]=i;
> 		}
> 		RMQCreate();
> 		for (i=1;i<=n;i++)
> 		    num[i]=0;
> 		scanf ("%d",&m);
> 		while (m--)
> 		{
> 			while(scanf("%c",&a)&&a!='(');
> 			scanf("%d%d",&u,&v);
> 			if (R[u]<=R[v])
> 			    num[E[RMQFind(R[u],R[v])]]++;
> 			else
> 			    num[E[RMQFind(R[v],R[u])]]++;
> 			while(scanf("%c",&a)&&a!=')');
> 		}
> 		for (i=1;i<=n;i++)
> 			if (num[i])
> 			   printf ("%d:%d\n",i,num[i]);
> 	}
> }                                                                                                       

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator