Cod sursa(job #2414675)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 24 aprilie 2019 21:29:55
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

long long n,m,i,j,k,d,v[10001],x;

struct c{
    int i;
    int j;
    int d;
} M[100001];

inline long long cmmdc(long long a, long long b){
    while(b!=0){
        a=a%b;
        swap(a,b);
    }

    return a;
}

bool cmp(const c &a, const c &b){
    return a.d<b.d;
}

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

    for(k=1;k<=m;k++)
        fin>>M[k].i>>M[k].j>>M[k].d;

    sort(M+1,M+m+1,cmp);

    for(;m;m--){
        i=M[m].i;
        j=M[m].j;
        d=M[m].d;

        x=cmmdc(v[i],v[j]);

        if(d%x!=0){
            fout<<-1;
            return 0;
        }

        v[i]*=d/cmmdc(d,v[i]);
        v[j]*=d/cmmdc(d,v[j]);
    }

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


    return 0;
}