Mai intai trebuie sa te autentifici.
Cod sursa(job #165487)
Utilizator | Data | 26 martie 2008 08:09:54 | |
---|---|---|---|
Problema | Oz | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.96 kb |
# include <stdio.h>
# include <stdlib.h>
FILE *f=fopen("oz.in","r"), *g=fopen("oz.out","w");
int N,i,j;
long x,y,M,d,k,B[1001][3],A[100001];
int ok;
long cmmdc(long x, long y)
{
long r;
do{
r=x%y;
x=y; y=r;
}while (r);
return x;
}
int main()
{
fscanf(f,"%d %ld",&N,&M);
for (i=1;i<=N;i++) A[i]=1;
ok=1;
for (k=1;k<=M && ok;k++)
{
fscanf(f,"%d %d %ld",&i,&j,&d);
B[k][0]=i; B[k][1]=j; B[k][2]=d;
x=long (A[i])*d/cmmdc(A[i],d);
y=long (A[j])*d/cmmdc(A[j],d);
if (x>2000000000 || y>2000000000) {
fprintf(g,"-1");
fclose(g);
ok=0; break;
}
else {
A[i]=x; A[j]=y;
}
}
fclose(f);
if (ok) {
for (k=1;k<=M && ok ;k++)
if (cmmdc(A[B[k][0]],A[B[k][1]])!=B[k][2]) { ok=0;
}
if (!ok) {
fprintf(g,"-1");
fclose(g);
}
else {
for (i=1;i<=N;i++)
fprintf(g,"%ld ",A[i]);
fclose(g);
}
}
return 0;
}