Cod sursa(job #286799)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 24 martie 2009 10:34:35
Problema Paduri de multimi disjuncte Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream.h>
int v[100010],urm[100010],ult[100010],n,m,i,x,y,operatie,j;

int main()
{
ifstream f("disjoint.in");
ofstream g("disjoint.out");

f>>n>>m;
for(i=1;i<=n;i++) ult[i]=v[i]=i;

for(i=1;i<=m;i++)
 { f>>operatie>>x>>y;

    if(operatie==1)

      {  if(v[x]<v[y]) { urm[ult[x]]=y;

			 ult[x]=ult[y];

			  v[y]=v[x];

			 for(j=urm[y];j; j=urm[j])

			   v[j]=v[x];

		       }
	      else if(v[x]>v[y])

		       {  urm[ult[y]]=x;

			  ult[y]=ult[x];

			   v[x]=v[y];

			  for(j=urm[x];j; j=urm[j])

			   v[j]=v[y];
		       }
      }
       else if(v[x]==v[y]) g<<"DA"<<'\n';

		  else g<<"NU"<<'\n';
 }
f.close();
g.close();
return 0;
}