Cod sursa(job #2384675)

Utilizator JarvisAdrian Petrusca Jarvis Data 21 martie 2019 08:28:56
Problema Sate Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
 
    using namespace std;

vector<int> list[100010], road[100010];
queue<int> q;
int visit[100010], sum[100010];
int n, m, sat1, sat2, x, y;
int dis, node, length;
 
int main()
{
    ifstream cin("sate.in");
    ofstream cout("sate.out");
 
    cin >> n >> m >> sat1 >> sat2;
 
    for (int i = 0; i < m; i++)
        {
            cin >> x >> y >> dis;
            list[x].push_back(y);
            road[x].push_back(dis);
            list[y].push_back(x);
            road[y].push_back(dis);
        }
 
    visit[sat1] = 1;
    q.push(sat1);
 
    while (!q.empty())
    {
         node = q.front();
         q.pop();
 
         for (int i = 0; i < list[node].size(); i++)
         {
            int t = list[node][i];
            int g = road[node][i];
 
            if (visit[t] == 0)
            {
                visit[t] = 1;
 
                if (node > t)
                    sum[t] = sum[node] - g;
 
                if (node < t)
                    sum[t] = sum[node] + g;
 
                if (t == sat2)
                {
                	length = sum[sat2];
				}
                q.push(t);
            }
        }
    }
 
    cout << length;
    return 0;
}