Cod sursa(job #488460)

Utilizator nautilusCohal Alexandru nautilus Data 28 septembrie 2010 21:42:09
Problema Oz Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#define dmax 10010
using namespace std;

long n,m,i,j,d,ok;
long v[dmax];

void initializare()
{
 long i;
 for (i=1; i<=n; i++)
	 v[i]=1;
}

long cmmdc(long a, long b)
{
 long r;
 
 while (b!=0)
	 {
	  r=a % b; a=b; b=r;
	 }	
	
 return a;
}


long cmmmc(long a, long b)
{
 return (a * b) / cmmdc(a,b);
}


void calculare()
{
 v[i]=cmmmc(v[i],d);
 v[j]=cmmmc(v[j],d);	
}


void verificare()
{
 long k;

 ifstream fin("oz.in");
 fin>>n>>m;
 for (k=1; k<=m; k++)
	 {
	  fin>>i>>j>>d;
	  if (cmmdc(v[i],v[j])!=d)
		  {
		   ok=1;
		   return;
		  }
	 }
 for (i=1; i<=n; i++)
	 if (v[i]>2 000 000)
		 {
		  ok=1; 
		  return;
		 }
 fin.close();
}


void afisare()
{
 long i;	
 
 ofstream fout("oz.out");
 if (ok==1)
	 fout<<"-1"; else
	 for (i=1; i<=n; i++)
		 fout<<v[i]<<" ";
 fout.close();
}


int main()
{
 long k;
	
 ifstream fin("oz.in");
 fin>>n>>m;
 
 initializare();
 
 for (k=1; k<=m; k++)
	 {
	  fin>>i>>j>>d;
	  calculare();
	 }
 fin.close();
 
 verificare();
 afisare();

 return 0;
}