Pagini recente »
Istoria paginii runda/2016-10-05-test-7-8/clasament
|
Cod sursă (job #173310)
|
Istoria paginii runda/s13_caractere_7/clasament
|
Istoria paginii runda/cerc01.02.14/clasament
|
Cod sursă (job #542630)
Cod sursă (job
#542630)
#include<bits/stdc++.h>
using namespace std;
int n,x,y,x2,y2,b[253005];
char a[1000][1000];
int d1[]={0,1,0,-1,1,-1},d2[]={1,0,-1,0,-1,1};
bool c[4][253005],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<6;++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<4;++l)
if(c[l][y2])c[l][x2]=1;else if(c[l][x2])c[l][y2]=1;
}
}
if(((i%2==0)&&c[0][x2]&&c[1][x2])||(i%2&&c[2][x2]&&c[3][x2])){
cout<<i;
return 0;
}
}
}