Cod sursa(job #2001063)

Utilizator alextodoranTodoran Alexandru Raul alextodoran Data 15 iulie 2017 16:36:49
Problema Oz Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n,x[10002],ii,i,m,j,d,ok=1,dd,k,kk,d1;
int cmmdc(int a, int b)
{
    int r;
    while(b)
    {
        r=b;
        b=a%b;
        a=r;
    }
    return a;
}
int main()
{
    ifstream fin ("oz.in");
    ofstream fout ("oz.out");
    fin>>n>>m;
    fill(x+1,x+n+1,1);
    for(ii=1;ii<=m;ii++)
    {
        fin>>i>>j>>d;
        d1=d;dd=1;
        k=2;
        while(d!=1)
        {
            kk=0;
            while(d%k==0){d/=k;kk=1;}
            if(kk)dd*=k;
            k++;
        }
        while(x[i]%d1!=0)x[i]*=dd;
        while(x[j]%d1!=0)x[j]*=dd;
        if(cmmdc(x[i],x[j])!=d1){ok=0;break;}
    }
    if(ok)for(i=1;i<=n;i++)fout<<x[i]<<" ";
    else fout<<"-1";
    return 0;
}