Cod sursa(job #3358513)

Utilizator Darkillgo22Marcus Darkillgo22 Data 17 iunie 2026 09:06:48
Problema Oz Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;

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

int n, m, v[10001], u[100001], w[100001], x[100001], i, j, d, d2, a, b, ma, r, k;
int main(){
	fin >> n >> m;
	
    for (i = 1; i <= n; ++i)
        v[i] = 1;	
	ma = 2000000000;
	for (k = 1; k <= m; ++k) {
    	fin >> i >> j >> d;
    	d2 = d, a = v[i], b = v[j];
    	//cmmdc v[i] si d, cmmdc v[j] si d cu Euclid si dupa inmultim v[i/j] / cmmdc * d
    	while (d != 0) r = a % d, a = d, d = r;
    	//ne trebuie d ul 
    	d = d2;
    	while (d2 != 0) r = b % d2, b = d2, d2 = r;
    	
    	v[i] = v[i] / a, v[j] = v[j] / b;
        if ((v[i] <= ma / d) && (v[j] <= ma / d)) {
        	    v[i] = v[i] * d;
        	    v[j] = v[j] * d;
        }
    
    	else {
    		fout << -1;
    		return 0;
        }
        u[k] = d, x[k] = i, w[k] = j;
}
    for (k = 1; k <= m; ++k) {
        a = v[x[k]], b = v[w[k]];
    	while (a != 0) r = a % b, a = b, b = r;
    	if (a != u[k]) {
            fout << -1;
            return 0;
        }
    }
    //afisam vectorul la final daca se afla o solutie
    for (i = 1; i <= n; ++i)
    	fout << v[i] << " ";
    return 0;
}