Cod sursa(job #3349901)

Utilizator killah_queenTrifa Razvan killah_queen Data 3 aprilie 2026 09:52:00
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
using namespace std;
ifstream cin("oz.in");
ofstream cout("oz.out");

long long v[10001];
bool ok[10001];
long long gcd(long long a, long long b)
{
    while(b){ long long r=a%b; a=b; b=r; }
    return a;
}
long long lcm(long long a, long long b)
{
    return a/gcd(a,b)*b;
}

int ti[100001], tj[100001], td[100001];

int main()
{
    long long n, m;
    cin >> n >> m;
    for(int h = 0; h < m; h++)
        cin >> ti[h] >> tj[h] >> td[h];

    for(int h = 0; h < m; h++)
    {
        int i=ti[h], j=tj[h], d=td[h];
        if(ok[i]) v[i]=lcm(v[i],d);
        else { v[i]=d; ok[i]=true; }
        if(ok[j]) v[j]=lcm(v[j],d);
        else { v[j]=d; ok[j]=true; }
    }

    for(int s = 1; s <= n; s++)
    if(!ok[s]) v[s] = 1;  // orice valoare, nu -1

    for(int h = 0; h < m; h++)
        if(gcd(v[ti[h]], v[tj[h]]) != td[h])
        { cout << -1; return 0; }

    for(int s = 1; s <= n; s++)
        cout << v[s] << " ";
    return 0;
}