Pagini recente »
Cod sursă (job #770763)
|
Cod sursă (job #811862)
|
Cod sursă (job #341415)
|
Cod sursă (job #811851)
|
Cod sursă (job #770758)
Cod sursă (job
#770758)
#include<bits/stdc++.h>
using namespace std;
int n,x,y,x2,y2,b[25005];char a[505][505];
int d1[]={1,0,-1,0,-1,1},d2[]={0,1,0,-1,1,-1};
bool c[4][25005],check;
int unire(int x){
if(b[x]==0)return x;
return b[x]=unire(b[x]);
}
int main(){
ifstream cin("hex.in");
ofstream cout("hex.out");
cin>>n;
for(int i=1;i<=n*n;i++){
cin>>x>>y;
x2=unire(x*(n+1)+y);
if(x==1)c[0][x2]=1;
if(x==n)c[1][x2]=1;
if(y==1)c[2][x2]=1;
if(y==n)c[3][x2]=1;
if(i%2==1)a[x][y]='r';else a[x][y]='a';
for(int j=0;j<=5;j++)
if(a[x+d1[j]][y+d2[j]]==a[x][y]){
y2=unire((x+d1[j])*(n+1)+y+d2[j]);
if(x2!=y2){
b[y2]=x2;
for(int l=0;l<=3;l++)
if(c[l][y2])c[l][x2]=1;else if(c[l][x2])c[l][y2]=1;
}
}
if((i%2&&c[0][x2]&&c[1][y2])||(i%2&&c[2][x2]&&c[3][x2])){
cout<<i<<endl;
check=1;
}
if(check)break;
}
return 0;
}