Poj Solution 2236

http://poj.org/problem?id=2236

//* @author: 82638882@163.com
import java.util.*;
public class Main
{
 public static void main(String[] args)
 {
  Scanner in=new Scanner(System.in);
  int a=in.nextInt();
  int max=in.nextInt();
  max*=max;
  int[] ax=new int[a+1];
  int[] ay=new int[a+1];
  int[] arr=new int[a+1];
  int[] bool=new int[a+1];
  for(int i=1;i<=a;i++)
    arr[i]=i;
  for(int i=1;i<=a;i++)
  {
    ax[i]=in.nextInt();
    ay[i]=in.nextInt();
  }
  while(in.hasNext())
  {
   if(in.next().equals("O"))
    {
    int w=in.nextInt();
    if(bool[w]==1) continue;
    for(int j=1;j<=a;j++)
     {
       if(bool[j]==0) continue;
       int u=j;
       while(arr[u]!=u)
        u=arr[u];
       int l=w;
       while(arr[l]!=l)
        l=arr[l];
       if(l==u) continue;
       int x=ax[w]-ax[j];
       int y=ay[w]-ay[j];
       if(x*x+y*y<=max)
        {
        if(u>l) arr[j]=arr[w]=arr[u]=l;
        else arr[j]=arr[w]=arr[l]=u;
        }
      }
    bool[w]=1;
     }
     else
     {
    int r=in.nextInt(),w=r;
    while(arr[w]!=w)
       w=arr[w];
    int t=in.nextInt(),u=t;
    while(arr[u]!=u)
       u=arr[u];
    arr[r]=w;
    arr[t]=u;
    if(arr[w]==arr[u]&&bool[w]==1) System.out.println("SUCCESS");
    else System.out.println("FAIL");
      }
   }
 }
}
											
This entry was posted in poj. Bookmark the permalink.