Pagini recente » Borderou de evaluare (job #2929924) | Borderou de evaluare (job #1553932) | Borderou de evaluare (job #1636795) | Borderou de evaluare (job #2414864) | Cod sursa (job #2586610)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
void bfs(int n, int sursa, vector<vector<pair<int, int>>> & graf, vector<int> & distante, vector<bool> & vizitat)
{
int i;
queue<int> coada;
coada.push(sursa);
vizitat[sursa] = true;
int s;
while (!coada.empty())
{
s = coada.front();
coada.pop();
for (i = 0; i < graf[s].size(); i++)
if (!vizitat[graf[s][i].first])
{
distante[graf[s][i].first] = distante[s] + graf[s][i].second;
vizitat[graf[s][i].first] = true;
coada.push(graf[s][i].first);
}
}
}
int main()
{
int n, satX, satY;
ifstream fin("sate.in");
int m, aux, d;
fin >> n >> m >> satX >> satY;
satX--;
satY--;
int x, y;
vector<vector<pair<int, int>>> graf(n);
vector<int> distante(n);
vector<bool> vizitat(n);
for (int i = 0; i < m; i++)
{
fin >> x >> y >> d;
x--;
y--;
if (x > y)
{
aux = x;
x = y;
y = aux;
}
graf[x].emplace_back(y, d);
graf[y].emplace_back(x, -d);
}
fin.close();
bfs(n, satX, graf, distante, vizitat);
ofstream fout("sate.out");
fout << distante[satY];
fout.close();
return 0;
}