Pagini recente » Cod sursa (job #2475018) | Cod sursa (job #2912988) | Cod sursa (job #1177017) | Cod sursa (job #2145101) | Cod sursa (job #526550)
Cod sursa(job #526550)
#include<stdio.h>
FILE *fin,*fout;
int m,n,i,j,k;
long long int v[10001],d;
struct divizor{
int i;
int j;
long long int x;
}w[100001];
long long int cmmdc(long long int a,long long int b){
if(b==0)
return a;
return cmmdc(b,a%b);
}
int main(){
fin=fopen("oz.in","r");
fout=fopen("oz.out","w");
fscanf(fin,"%d %d",&n,&m);
for(i=1;i<=n;i++){
v[i]=1;
}
for(k=1;k<=m;k++){
fscanf(fin,"%d %d %lld\n",&i,&j,&d);
v[i]=v[i]*d/cmmdc(v[i],d);
v[j]=v[j]*d/cmmdc(v[j],d);
if(v[i]>=2000000000 || v[j]>=2000000000){
fprintf(fout,"-1");
return 0;
}
w[k].i=i;
w[k].j=j;
w[k].x=d;
}
for(k=1;k<=m;k++){
if(cmmdc(v[w[k].i],v[w[k].j])!=w[k].x){
fprintf(fout,"-1");
return 0;
}
}
for(i=1;i<=n;i++){
fprintf(fout,"%lld ",v[i]);
}
return 0;
}