Pagini recente » Cod sursa (job #1896264) | Cod sursa (job #2607229) | Cod sursa (job #3190266) | Cod sursa (job #1234312) | Cod sursa (job #1155085)
#include<stdio.h>
#include<vector>
#include<queue>
//#include<algorithm>
using namespace std;
FILE*f=fopen("sate.in","r");
FILE*g=fopen("sate.out","w");
int c,N,M,X,Y,x,p,viz[30005],aux;
struct s{
int vecin;
int dist;
} y;
vector<s>W[30005];
queue<int>coada;
queue<int>cost;
int main () {
fscanf(f,"%d %d %d %d",&N,&M,&X,&Y);
int i;
for(i=1;i<=M;i++)
{
fscanf(f,"%d %d %d",&x,&y.vecin,&y.dist);
W[x].push_back(y);
aux = y.vecin;
y.vecin = x; y.dist = -y.dist;
W[aux].push_back(y);
}
coada.push(X);
cost.push(0);
viz[X] = 1;
vector<s>::iterator itt;
while ( !coada.empty() ) {
p = coada.front();
c = cost.front();
if( p == Y )
break;
for( itt = W[p].begin() ; itt != W[p].end(); ++itt ){
if ( ! viz[ (*itt).vecin ] ){
viz[(*itt).vecin] = 1;
coada.push((*itt).vecin);
cost.push(c + (*itt).dist);
}
}
coada.pop();
cost.pop();
}
fprintf( g,"%d\n",c );
fclose(f);
fclose(g);
return 0;
}