Cod sursa(job #166891)

Utilizator rastbananaPanait-Ardelean Alice rastbanana Data 28 martie 2008 16:54:12
Problema Oz Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<iostream.h>

unsigned long cmmdc(unsigned long n, unsigned long m)
{unsigned long r;
 do
	 {r=n%m;
	  n=m;
	  m=r;
	 }
 while(r);
 return n;
}

int verif(unsigned long a[], unsigned long i[], unsigned long j[], unsigned long d[], unsigned long m)
{for(int k=1;k<=m;k++)
	 if(cmmdc(a[i[k]],a[j[k]])!=d[k])
		 return 0;
 return 1;
}

void main()
{unsigned long n, m, a[10010], i[100010], j[100010], d[100010];
 cin>>n>>m;
 for(int k=1;k<=n;k++)
	 a[k]=1;
 for(k=1;k<=m;k++)
	 {cin>>i[k]>>j[k]>>d[k];
	  a[i[k]]=a[i[k]]*(d[k]/cmmdc(a[i[k]],d[k]));
	  a[j[k]]=a[j[k]]*(d[k]/cmmdc(a[j[k]],d[k]));
	 }
 int ok=1;
 for(k=1;k<=m && ok;k++)
	 if(cmmdc(a[i[k]],a[j[k]])!=d[k])
		 ok=0;

 if(ok)
	 {for(k=1;k<=n;k++)
		  cout<<a[k]<<" ";
	  cout<<endl;
	 }
 else
	 cout<<"-1\n";
}