Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

新思维

Posted by 13408100238 at 2015-03-24 21:52:26 on Problem 1182
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <sstream>
#include <iomanip>
using namespace std;
const int INF=0x4fffffff;
const int EXP=1e-6;
const int MS=50005;
const int MS2=100005;

int op[MS2],X[MS2],Y[MS2];
int fa[3*MS];

int N,K;
void input()
{
      scanf("%d%d",&N,&K);
      for(int i=0;i<K;i++)
            scanf("%d%d%d",&op[i],&X[i],&Y[i]);
      for(int i=0;i<3*N;i++)
            fa[i]=i;
}

int find(int x)
{
      return x==fa[x]?x:fa[x]=find(fa[x]);
}

void merge(int x,int y)
{
      int f1=find(x);
      int f2=find(y);
      if(f1!=f2)
            fa[f1]=f2;
}

bool same(int x,int y)
{
      return find(x)==find(y);
}

void solve()
{
      int ans=0;
      for(int i=0;i<K;i++)
      {
            int  t=op[i];
            int x=X[i]-1;
            int y=Y[i]-1;
            if(x<0||x>=N||y<0||y>=N)
            {
                  ans++;
                  continue;
            }
            if(t==1)
            {
                  if(same(x,y+N)||same(x,y+2*N))
                        ans++;
                  else
                  {
                        merge(x,y);
                        merge(x+N,y+N);
                        merge(x+2*N,y+2*N);
                  }
            }
            else
            {
                  if(same(x,y)||same(x,y+2*N))
                        ans++;
                  else
                  {
                        merge(x,y+N);
                        merge(x+N,y+2*N);
                        merge(x+2*N,y);
                  }
            }
      }
      printf("%d\n",ans);
}

int main()
{
      input();
      solve();
      return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator