Cod sursa(job #2690568)

Utilizator un_fes_galbendaniel guba un_fes_galben Data 24 decembrie 2020 16:10:47
Problema Oz Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
using namespace std;
long long v1[10005],v[10005];
int poz1[100005],poz2[100005],d[100005];
long long cmmdc(long long a,long long b)
{
   long long  c;
   while(b!=0)
   {
       c=a%b;
       a=b;
       b=c;
   }
   return a;
}
long long  cmmmc(long long a,long long c)
{
      return (a/cmmdc(a,c))*c;
}
int main()
{
    ifstream fin("oz.in");
    ofstream fout("oz.out");
    long long n,m,a,b,c,ok=0,l1,l2,l3,lim=2000000000;
    fin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        v1[i]=1;
        v[i]=1;
    }
    for(int i=1; i<=m; i++)
    {
        fin>>poz1[i]>>poz2[i]>>d[i];
        v[poz1[i]]=cmmmc(v[poz1[i]],d[i]);
        v[poz2[i]]=cmmmc(v[poz2[i]],d[i]);
        if(v[poz1[i]]>lim||v[poz2[i]]>lim)
        {
            ok=1;
            break;
        }
    }
    if(ok==0)
    {
        for(int i=1; i<=m; i++)
        {
           if(cmmdc(v[poz1[i]],v[poz2[i]])!=d[i])
           {
               ok=1;
               break;
           }
        }
    }
    if(ok==0)
    {
        for(int i=1; i<=n; i++)
        {
            fout<<v[i]<<" ";
        }
        fout<<'\n';
    }
    else
    {
        fout<<"-1"<<'\n';
    }
    return 0;
}