| ||||||||||
| 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