Cod sursa(job #1070366)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 31 decembrie 2013 18:50:17
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <cstdio>
#include <fstream>
#define NR 100005

using namespace std;

int n,m,i,A[NR],B[NR],a,b;
long long V[NR],D[NR],d;

long long cmmdc(long long x, long long y) {
    long long r;
    while(y) {
        r=x%y;
        x=y;
        y=r;
    }
    return x;
}

long long cmmmc(long long x, long long y) {
    long long p=x*y;
    p=p/cmmdc(x,y);
    return p;
}

int main() {
    ofstream g("oz.out");
    FILE *f = fopen("oz.in","r");
    fscanf(f,"%d %d",&n,&m);
    for(i=1;i<=n;i++)
        V[i]=1;
    for(i=1;i<=m;i++) {
        fscanf(f,"%d %d %lld", &a,&b,&d);
        A[i]=a;B[i]=b;D[i]=d;
        V[a] = cmmmc(V[a],d);
        V[b] = cmmmc(V[b],d);
    }
    bool ok=1;
    for(i=1;i<=m && ok;i++)
        if(cmmdc(V[A[i]],V[B[i]]) != D[i])
            ok=0;
    if(ok)
        for(i=1;i<=n;i++)
            g<<V[i]<<" ";
    else
        g<<"-1\n";
    return 0;
}