Cod sursa(job #1378987)

Utilizator GabiSStoica Gabriel GabiS Data 6 martie 2015 15:26:12
Problema Traseu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <queue>
#define NMAX 502

using namespace std;

ifstream f("traseu.in");
ofstream g("traseu.out");

int const dl[]={0,1};
int const dc[]={1,0};

int ve[NMAX][NMAX],i,j,m,n,z[NMAX][NMAX],ii,jj,k;


bool OK(int x, int y){
if(x < 1 || y < 1 || x > m || y > n)
    return false;
return true;

}

void Lee(){
queue < pair < int, int > > coada;
coada.push(make_pair(1,1));
z[1][1]=ve[1][1];

while( !coada.empty()){
    ii = coada.front().first;
    jj = coada.front().second;
    coada.pop();
    for(k=0;k<2;k++){
   i = ii + dl[k];
   j = jj + dc[k];
   if(OK(i,j) ){
    if(z[i][j]!=0){
        if( z[ii][jj]+ve[i][j]> z[i][j]   )
        z[i][j]=z[ii][jj]+ve[i][j];

    }
    else z[i][j]=z[ii][jj]+ve[i][j];
    coada.push(make_pair(i,j));
   }
    }



}


}

int main(){
f>>m>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
f>>ve[i][j];
Lee();
g<<z[m][n];


return 0;}