Cod sursa(job #197653)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 5 iulie 2008 13:21:05
Problema Reconst Scor 0
Compilator cpp Status done
Runda Junior Challenge 2008 Marime 1.01 kb
#include <fstream>
std::ifstream f1("reconst.in");
std::ofstream f2("reconst.out");
void rez();

long s[2020][2020];
int n;

int main()
{
  int m,i, j, k, a, b;
	f1>>n>>m;
	for (i=1; i<=n; i++)
		for (j=1; j<=n; j++)
			s[i][j]=4000000;
	for (i=0; i<m; i++)
	{
		f1>>a;
		f1>>b;
		f1>>s[a][b];
	}//for i
	for (i=1; i<=n; i++)
		for (j=1; j<=n; j++)
			if (s[i][j]!=4000000)
  		{
	  		for (k=j+1; k<=n; k++)
					if (s[i][k]!=4000000)
						s[j+1][k]=s[i][k]-s[i][j];
				for (k=i+1; k<=n; k++)
					if (s[k][j]!=4000000)
						s[i][k-1]=s[i][j]-s[k][j];
		  }//if		
	for (i=1; i<=n; i++)
	{
		if (s[i][i]==4000000)
		{
			s[i][i]=0;
			rez();
		}//if
		f2<<s[i][i];
		if (i<n)
			f2<<" ";
	}//for i
	f1.close();
	f2.close();
}//main

void rez()
{
	int i, j, k;
	for (i=1; i<=n; i++)
		for (j=1; j<=n; j++)
			if (s[i][j]!=4000000)
  		{
	  		for (k=j+1; k<=n; k++)
					if (s[i][k]!=4000000)
						s[j+1][k]=s[i][k]-s[i][j];
				for (k=i+1; k<=n; k++)
					if (s[i][k]!=4000000)
						s[j][k-1]=s[i][k]-s[i][j];
		  }//if		
}//rez