Pagini recente » Cod sursa (job #2850995) | Cod sursa (job #1720408) | Cod sursa (job #2441855) | Cod sursa (job #1843280) | Cod sursa (job #197636)
Cod sursa(job #197636)
#include<fstream.h>
#define dim 2001
//#define sp -2001
ifstream f("reconst.in");
ofstream g("reconst.out");
long mat[dim][dim];
int main()
{
long i,j,x,y,z,n,m,nn,nn2,sp=-2001;
f>>n>>m;
//initializare
for(i=1;i<=n;i++)
for(j=i;j<=n;j++) mat[i][j]=sp;
for(i=1;i<=m;i++)
{
f>>x>>y>>z;
mat[x][y]=z;
mat[y][y]=z;
}
f.close();
nn=n;
nn2=n;
//cat timp exista elemente pe care nu le-am aflat
//sau daca am parcurs de n ori matricea
while(nn && nn2)
{
//parcurg matricea
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
{//daca exista doua valori consecutive [jos, dreapta]
if(mat[i][j]!=sp)
{
//jos
if(mat[i+1][j]!=sp)
{
//am aflat elementul i
mat[i][i]=mat[i][j]-mat[i+1][j];
nn--;
}
//dreapta
if(mat[i][j+1]!=sp)
{
//am aflat elementul j+1
mat[j+1][j+1]=mat[i][j+1]-mat[i][j];
nn--;
}
}
}
nn2--;
}
for(i=1;i<=n;i++)
if(mat[i][i]!=sp) g<<mat[i][i]<<" ";
else g<<0<<" ";
g<<'\n';
g.close();
return 0;
}