Cod sursa(job #390261)

Utilizator cristiprgPrigoana Cristian cristiprg Data 3 februarie 2010 13:09:58
Problema Oz Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
int v[10005], m, n;

int cmmdc(int a, int b)
{
    if (b != 0)
        return cmmdc(b, a%b);
    else
        return a;
}

int main()
{
    FILE *f = fopen("oz.in", "r"), *fout = fopen ("oz.out", "w");
    fscanf(f, "%d%d", &n, &m);
    for (int i = 1; i <= n; ++i)
        v[i] = 1;

    for (int i, j, d, c, C;m;--m)
    {
        fscanf(f, "%d%d%d", &i, &j, &d);
        C = cmmdc(v[i], v[j]);

        c = cmmdc(v[i], d);
        if (d >= c)
            v[i] *=d/c;
        else
        {
            fprintf (fout, "-1\n");
            fclose(f);
            fclose(fout);
            return 0;
        }
        //aceeasi chestie pt j
        c = cmmdc(v[j], d);
        if (d >= c)
            v[j] *=d/c;
        else
        {
            fprintf (fout, "-1\n");
            fclose(f);
            fclose(fout);
            return 0;
        }
    }
    for (int i = 1; i <= n; ++i)
        fprintf (fout, "%d ", v[i]);
    fprintf (fout, "\n");

    fclose(f);
    fclose(fout);

    return 0;
}