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:还是不明白下面大牛提到的相对偏移In Reply To:Re:还是不明白下面大牛提到的相对偏移 Posted by:lithum at 2009-07-24 16:32:51 > 我把majiaN大牛的代码给补充成一个完整的程序了,代码如下,希望对你有帮助:-) > > #include<iostream> > using namespace std; > > int N,K; > int D,X,Y; > int lyn; > > int p[100001]; > int ch[50001]; > int find(int k); > void check(int x,int y,int d); > > int main() > { > //freopen("input.txt","r",stdin); > lyn=0; > int i; > cin>>N>>K; > memset(ch,0,sizeof(ch)); > for(i=0;i<N+1;i++) p[i]=i; > for(i=0;i<K;i++) > { > scanf("%d %d %d",&D,&X,&Y); > check(X,Y,D-1); > } > cout<<lyn<<endl; > return 0; > } > > int find(int k) > { > if (p[k]==k) > return k; > int t=find(p[k]);//t被赋值为k结点的最终根 > ch[k]=(ch[k]+ch[p[k]])%3; //这个向量关系需要发现 > p[k]=t; > return t; > } > > void check(int x,int y,int d) > { > int tp=find(x),tq=find(y); > if(x>N||y>N) > { > ++lyn; > return; > } > if (tp==tq) > { > if ((ch[x]-ch[y]+3)%3!=d)//这个关系根据上面的可以自己用向量推 > { > ++lyn; > } > return; > } > p[tp]=tq; > ch[tp]=(ch[y]-ch[x]+d+6)%3;//这个同理 > } ch,p分别表示什么啊?? Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator