Cod sursa(job #2189520)

Utilizator mariusn01Marius Nicoli mariusn01 Data 28 martie 2018 15:38:50
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>

using namespace std;
int v[10010];
ifstream fin ("oz.in");
ofstream fout("oz.out");
int L[100010], R[100010], D[100010];
int n, m;

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

int main() {
    fin>>n;
    fin>>m;
    for (int i=1;i<=n;i++)
        v[i] = 1;

    for (int i=1;i<=m;i++) {
        fin>>L[i]>>R[i]>>D[i];
        /// calculam cmmdc(v[ L[i] ] si D[i])
        v[ L[i] ] = v[ L[i] ] / cmmdc( v[ L[i] ], D[i] ) * D[i];
        v[ R[i] ] = v[ R[i] ] / cmmdc( v[ R[i] ], D[i] ) * D[i];
    }
    int ok = 1;
    for (int i=1;i<=m;i++) {
        if (cmmdc ( v[ L[i] ], v[ R[i] ] ) != D[i]) {
            ok = 0;
            break;
        }
    }
    if (ok == 0) {
        fout<<-1;
        return 0;
    }

    for (int i=1;i<=n;i++)
        fout<<v[i]<<" ";
}