Cod sursa(job #181916)

Utilizator the.phoenixMihaescu Tiberiu Ioan the.phoenix Data 19 aprilie 2008 12:30:12
Problema Oz Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream.h>
#include<stdio.h>
int main()
{FILE *f, *g;
 f=fopen("oz.in","r");
 g=fopen("oz.out","w");
long p=0,a,i,n,m,p1[10000],p2[10000],cmmdc[10000],v[10000],r1,r2;
fscanf(f,"%ld%ld",&n,&m);
for(i=1;i<=m;i++)
	fscanf(f,"%ld%ld%ld",&p1[i],&p2[i],&cmmdc[i]);
for(i=1;i<=n;i++)
	v[i]=1;
for(i=1;i<=m;i++)
	{v[p1[i]]=v[p1[i]]*cmmdc[i];
	 v[p2[i]]=v[p2[i]]*cmmdc[i];
	 }
for(i=1;i<=m;i++)
	{r1=v[p1[i]];
	 r2=v[p2[i]];
	 while(r2!=0)
		{a=r1%r2;
		 r1=r2;
		 r2=a;
		 }
	 if(cmmdc[i]!=r1)
		{v[p1[i]]=v[p1[i]]/(r1/cmmdc[i]);
		 v[p2[i]]=v[p2[i]]/(r1/cmmdc[i]);}
	}
for(i=1;i<=m;i++)
	{r1=v[p1[i]];
	 r2=v[p2[i]];
	 while(r2!=0)
		{a=r1%r2;
		 r1=r2;
		 r2=a;
		 }
	 if(cmmdc[i]!=r1)
		{p=1;
		 break;
		 }
			}
if(p==1)
	fprintf(g,"imposibil\n");
else
	for(i=1;i<=n;i++)
   	fprintf(g,"%ld ",v[i]);
fclose(f);
fclose(g);
return 0;
}