Nu aveti permisiuni pentru a descarca fisierul grader_test12.in
Cod sursa(job #67814)
Utilizator | Data | 25 iunie 2007 17:26:24 | |
---|---|---|---|
Problema | Sate | Scor | 15 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.1 kb |
#include <fstream>
#include <math.h>
std::ifstream f1("sate.in");
std::ofstream f2("sate.out");
int main()
{
long dist[300][300], m;
int n, i, j, k, x, y, stop;
f1>>n>>m>>x>>y;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
dist[i][j]=0;
for (k=0; k<m; k++)
{
f1>>i>>j;
f1>>dist[i][j];
dist[i][j]*=-1;
dist[j][i]=dist[i][j];
}//for k
stop=0;
while (!stop)
{
stop=1;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if (dist[i][j]<0)
{
for (k=1; k<=n; k++)
if ((dist[i][k]!=0)&&(j!=k)&&(dist[j][k]==0))
if (((j-i)*(k-i))>=0) //ac semn
{
dist[j][k]=-1*abs(abs(dist[i][j])-abs(dist[i][k]));
dist[k][j]=dist[j][k];
if (dist[x][y]!=0)
stop=1;
else
stop=0;
}//if
else //semn dif
{
dist[j][k]=-1*(abs(dist[i][j])+abs(dist[i][k]));
dist[k][j]=dist[j][k];
if (dist[x][y]!=0)
stop=1;
else
stop=0;
}//else
dist[i][j]*=-1;
}//if
}//while
f2<<abs(dist[x][y])<<"\n";
f1.close();
f2.close();
return 0;
}//main