Pagini recente » Cod sursa (job #1408843) | Cod sursa (job #1630356) | Cod sursa (job #772725) | Cod sursa (job #1137899) | Cod sursa (job #2981083)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int n,m,a,b,x,y,pr,dist[100100];
struct edge
{
int dist;
int price;
};
vector <edge> neighbours[30005];
void bfs (int source)
{
queue <edge> myq;
myq.push({source,0});
dist[source]=0;
while (!myq.empty())
{
edge u=myq.front();
myq.pop();
for (auto it : neighbours[u.dist])
if (dist[it.dist]==-3000000)
{
dist[it.dist]=it.price+dist[u.dist];
myq.push(it);
}
}
}
int main()
{
ifstream f ("sate.in");
ofstream g ("sate.out");
f>>n>>m>>x>>y;
for (int i=1; i<=n; i++)
{
f>>a>>b>>pr;
neighbours[a].push_back({b,pr});
neighbours[b].push_back({a,-pr});
}
for (int i=1; i<=n; i++)
dist[i]=-3000000;
bfs(x);
g<<dist[y];
}