Pagini recente » Cod sursa (job #1012421) | Cod sursa (job #1550599) | Cod sursa (job #1748605) | Cod sursa (job #1239391) | Cod sursa (job #1894685)
#include <fstream>
#include <queue>
#include <vector>
#define NMAX 30005
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct {
int father;
int c;
}FT[NMAX];
int n, m, x, y, visited[NMAX], road;
vector <int> G[NMAX], C[NMAX];
void BFS(int node)
{
queue <int> Q;
int v, i;
Q.push(x);
visited[x] = 1;
while(!Q.empty())
{
v = Q.front();
Q.pop();
for(i = 0; i < G[v].size(); i++)
if(visited[G[v][i]] == 0)
{
Q.push(G[v][i]);
visited[G[v][i]] = 1;
FT[G[v][i]].father = v;
FT[G[v][i]].c = C[v][i];
if(G[v][i] == y)
return;
}
}
}
int main()
{
int i, e1, e2, cost;
fin >> n >> m >> x >> y;
for(i = 1; i <= m; i++)
{
fin >> e1 >> e2 >> cost;
G[e1].push_back(e2);
G[e2].push_back(e1);
C[e1].push_back(cost);
C[e2].push_back(cost);
}
BFS(x);
for(i = y;i != x; i = FT[y].father)
road += FT[i].c;
fout << road << '\n';
return 0;
}