Cod sursa(job #1151359)

Utilizator NistorSergiuNistor Sergiu NistorSergiu Data 24 martie 2014 08:36:35
Problema Oz Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
using namespace std;
typedef struct {int pi,pj;long long dd;} CMM;
CMM ele[100001];
long long vec[10001];
bool modi[10001];
long long cmmdc(long long a, long long b)
{
    long long r;
    while(b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
int main()
{
    int n,m;
    int ii,i,j;
    long long d, dc;
    bool posib=1;
    ifstream f("oz.in");
    f>>n>>m;
    for(i=1;i<=n;i++)
        vec[i]=1;
    for(ii=1;ii<=m;ii++)
    {
        f>>i>>j>>d;
        dc=cmmdc(vec[i],d);
        vec[i]=vec[i]/dc*d;
        dc=cmmdc(vec[j],d);
        vec[j]=vec[j]/dc*d;
        modi[i]=1;
        modi[j]=1;
        ele[ii].pi=i;
        ele[ii].pj=j;
        ele[ii].dd=d;
    }
    f.close();
    for(i=1;i<=n;i++)
        if(!modi[i])
            break;
    if(i<=n)
        posib=0;
    for(ii=1;ii<=m;ii++)
        if(cmmdc(vec[ele[ii].pi],vec[ele[ii].pj])!=ele[ii].dd)
            break;
    if(ii<=m)
        posib=0;
    ofstream g("oz.out");
    if(!posib)
        g<<"-1";
    else
        for(i=1;i<=n;i++)
            g<<vec[i]<<" ";
    g<<'\n';
    g.close();
    return 0;
}