Pagini recente » Cod sursa (job #61426) | Cod sursa (job #3210449) | Cod sursa (job #3271808) | Cod sursa (job #383641) | Cod sursa (job #203109)
Cod sursa(job #203109)
#include <stdio.h>
#define MAX 10001
FILE *f,*g;
int n,ok;
long v[MAX];
unsigned long m;
long euclid(long a,long b){
if(!b) return a;
else return euclid(b,a%b);
}
void rezolvare(){
int a,b;
long d,i,x,y;
long long t1,t2;
fscanf(f,"%d %ld",&n,&m);
for(i=1;i<=n;i++)v[i]=1;
for(i=1;i<=m;i++){
fscanf(f,"%d %d %ld",&a,&b,&d);
x=d/euclid(v[a],d);
y=d/euclid(v[b],d);
t1=(long long )x*(long long)v[a];
t2=(long long) y*(long long )v[b];
if(t1>2000000000||t2>2000000000){
ok=1;
break;
}
v[a]=x*v[a];
v[b]=y*v[b];
if(euclid(v[a],v[b])!=d){
ok=1;
break;
}
}
}
void afisare(){
int i;
if(!ok) for (i=1;i<=n;i++) fprintf(g,"%lu ",v[i]);
else
fprintf(g,"-1");
fprintf(g,"\n");
}
int main(){
f=fopen("oz.in","r");
g=fopen("oz.out","w");
rezolvare();
afisare();
fclose(f);
fclose(g);
return 0;
}