Cod sursa(job #1669848)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 31 martie 2016 09:53:23
Problema Oz Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <algorithm>

using namespace std;
long long v[10005];
pair <pair<int,int>,int> w[100005];
int cmmdc (int a,int b){
    int r;
    while (b>0){
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
int main()
{
    FILE *fin=fopen ("oz.in","r");
    FILE *fout=fopen ("oz.out","w");
    int n,m,i,x,y,dc;
    fscanf (fin,"%d%d",&n,&m);
    for (i=1;i<=n;i++)
        v[i]=1;
    for (i=1;i<=m;i++){
        fscanf (fin,"%d%d%d",&x,&y,&dc);
        v[x]*=dc/cmmdc (v[x],dc);
        v[y]*=dc/cmmdc (v[y],dc);
        w[i].first.first=x;
        w[i].first.second=y;
        w[i].second=dc;
    }
    for (i=1;i<=m;i++){
        x=w[i].first.first;
        y=w[i].first.second;
        dc=w[i].second;
        if (cmmdc (v[x],v[y])!=dc){
            fprintf (fout,"-1");
            return 0;
        }
    }
    for (i=1;i<=n;i++)
        fprintf (fout,"%lld ",v[i]);
    return 0;
}