Pagini recente » Cod sursa (job #1716422) | Cod sursa (job #2679995) | Cod sursa (job #445133) | Cod sursa (job #283981) | Cod sursa (job #606682)
Cod sursa(job #606682)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define v first
#define c second
#define NMax 30005
using namespace std;
vector < pair <int, int> > G[NMax];
int N, Start, End;
queue <int> Q;
int D[NMax];
void Read ()
{
ifstream fin ("sate.in");
int M;
fin >> N >> M >> Start >> End;
for (; M>0; --M)
{
int X, Y, Z;
fin >> X >> Y >> Z;
if (X>Y)
{
int Aux=X;
X=Y;
Y=Aux;
}
G[X].push_back (make_pair (Y, Z));
G[Y].push_back (make_pair (X, -Z));
}
fin.close ();
}
void BFS ()
{
Q.push (Start);
while (!Q.empty ())
{
int X=Q.front ();
Q.pop ();
if (X==End)
{
break;
}
for (unsigned i=0; i<G[X].size (); ++i)
{
int V=G[X][i].v;
int C=G[X][i].c;
if (!D[V])
{
D[V]=D[X]+C;
Q.push (V);
}
}
}
}
void Print ()
{
ofstream fout ("sate.out");
fout << D[End] << "\n";
fout.close ();
}
int main()
{
Read ();
BFS ();
Print ();
return 0;
}