Cod sursa(job #2492646)

Utilizator Vlad_AnicaAnica-Popa Vlad-Ioan Vlad_Anica Data 15 noiembrie 2019 08:59:48
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <iostream>
#include <fstream>

using namespace std;

int miscari[300000],v[10001];

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

int main()
{

    long long x,y,cmmmc,r,a,b,d1,inm;
    int n,d,i,m,j,c,a1,a2;
    fin >> n >> m;
    for(i=1;i<=n;i++)
    {
        v[i]=1;
    }
    j=0;
    while(m>0)
    {
        fin >> x >> y >> d;
        miscari[j]=x;
        j++;
        miscari[j]=y;
        j++;
        miscari[j]=d;
        j++;
        a=v[x];
        b=v[y];
        d1=d;
        while(b!=0)
        {
            r=d1%b;
            d1=b;
            b=r;
        }
        cmmmc=v[y]/d1*d;
        if(cmmmc%v[y]==0)
        {
            v[y]=cmmmc;
        }
        else
        {
            v[y]*=cmmmc;
        }
        d1=d;
        while(d1!=0)
        {
            r=a%d1;
            a=d1;
            d1=r;
        }
        cmmmc=v[x]/a*d;
        if(cmmmc%v[x]==0)
        {
            v[x]=cmmmc;
        }
        else
        {
            v[x]*=cmmmc;
        }


        m--;
    }
    i=0;
    c=0;
    while(i<j && c==0)
    {
      a1=miscari[i];
      a2=miscari[i+1];
      a=v[a1];
      b=v[a2];
      while(b!=0)
      {
          r=a%b;
          a=b;
          b=r;
      }
      if(a!=miscari[i+2])
      {
          c=1;
      }
      i+=3;
    }
    if(i!=j || m>1)
    {
        fout << -1;
    }
    else
    {
         for(i=1;i<=n;i++)
         {
             fout << v[i] << " ";
         }

    }


    return 0;
}