Cod sursa(job #2657044)

Utilizator Antonia_onisoruantonia onisoru Antonia_onisoru Data 9 octombrie 2020 16:23:41
Problema Oz Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("oz.in");
ofstream out("oz.out");

int cmmmc(int a, int b)
{
    int r, p;
      p=a*b;
    while(b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return p/a;
}

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

int trip[100000][3];
int v[10000];

int main()
{
    int n, m, k;
    in>>n>>m;
    for( k = 0; k < n; k++ ){
        v[k] = 1;
    }
    for( k = 0; k < m; k++ ){
        in>>trip[k][0]>>trip[k][1]>>trip[k][2];
        if(v[ trip[k][0] - 1 ] % trip[k][2] != 0 ){
            v[ trip[k][0] - 1 ] = cmmmc(v[ trip[k][0] - 1 ], trip[k][2]);
        }
        if(v[ trip[k][1] - 1 ] % trip[k][2] != 0 ){
            v[ trip[k][1] - 1 ] = cmmmc(v[ trip[k][1] - 1 ], trip[k][2]);
        }
    }
    for( k = 0; k < m; k++ ){
        if( cmmdc(v[ trip[k][0] - 1 ], v[ trip[k][1] - 1 ]) != trip[k][2] )
            k = m + 2;
    }
    if( k == m + 2 )
        out<<"-1";
    else{
        for( k = 0; k < n; k++ ){
            out<<v[k]<<" ";
        }
    }
    return 0;
}