Cod sursa(job #488480)

Utilizator nautilusCohal Alexandru nautilus Data 28 septembrie 2010 22:35:51
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#define dmax 10010
#define dmax2 100010
using namespace std;

long long n,m,ok;
long long t1[dmax2],t2[dmax2],d[dmax2];
long long v[dmax];

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

int main()
{
 long long i;
 ifstream fin("oz.in");
 fin>>n>>m;
 for (i=1; i<=n; i++)
	 v[i]=1;
 for (i=1; i<=m; i++)
	 {
	  fin>>t1[i]>>t2[i]>>d[i];
	  v[t1[i]]=(v[t1[i]]*d[i])/cmmdc(v[t1[i]],d[i]);
	  v[t2[i]]=(v[t2[i]]*d[i])/cmmdc(v[t2[i]],d[i]);
	 }
	
 for (i=1; i<=n; i++)
	 if (v[i] > 2000000000)
		 {
		  ok=1; break;
		 }
 for (i=1; i<=m; i++)
	 if (cmmdc(v[t1[i]],v[t2[i]])!=d[i])
		 {
		  ok=1; break;
		 }
 
 ofstream fout("oz.out");
 if (ok==1)
	 fout<<"-1"; else
	 for (i=1; i<=n; i++)
		 fout<<v[i]<<" ";

 fin.close();
 fout.close();
 
 return 0;
}