Cod sursa(job #2182650)

Utilizator cezar_titianuTitianu Cezar cezar_titianu Data 22 martie 2018 16:05:47
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>

using namespace std;

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

struct str{
    int poz1, poz2, nrk;
}chn[100000];

int sav, nrnr, rest;

int vec[10000];

int func(int nr1, int nr2){
    while(nr2){
        rest = nr1 % nr2;
        nr1 = nr2;
        nr2 = rest;
    }
    return nr1;
}

bool flag2 = true;

int main()
{
    fin >> sav >> nrnr;
    for(int index = 0; index < sav; index++){
        vec[index] = 1;
    }
    for(int index = 0; index < nrnr; index++){
        fin >> chn[index].poz1 >> chn[index].poz2 >> chn[index].nrk;
        chn[index].poz1--;
        chn[index].poz2--;
        vec[chn[index].poz1] *= chn[index].nrk / func(chn[index].nrk, vec[chn[index].poz1]);
        vec[chn[index].poz2] *= chn[index].nrk / func(chn[index].nrk, vec[chn[index].poz2]);
    }
    for(int index = 0; index < nrnr; index++){
        if(func(vec[chn[index].poz1], vec[chn[index].poz2]) != chn[index].nrk){
            flag2 = false;
            fout << "-1";
            break;
        }
    }
    if(flag2){
        for(int index = 0; index < sav; index++){
            fout << vec[index] << " ";
        }
    }
    return 0;
}