Pagini recente » Cod sursa (job #2420553) | Cod sursa (job #748685) | Cod sursa (job #909325) | Cod sursa (job #3165811) | Cod sursa (job #1395908)
#include <iostream>
#include <vector>
#include <fstream>
#define nmax 30001
#define inf 20000000
#define node first
#define value second
using namespace std;
vector <pair<int, int> > v[nmax];
int n,m,y,sol,x,cost[nmax],source,dest,z,j;
bool seen[nmax];
ifstream f("sate.in");
ofstream g("sate.out");
void dfs(int x)
{
seen[x]=true;
for (int i =0;i<v[x].size();i++)
{
int y=v[x][i].node;
if (!seen[y])
{
if (cost[y]>cost[x]+v[x][i].value)
{
cost[y]=cost[x]+v[x][i].value;
}
dfs(y);
if (y==dest) return;
}
}
}
int main()
{
f>>n>>m>>source>>dest;
for(int i=1;i<=m;i++)
{
f>>x>>y>>z;
v[x].push_back(make_pair(y,z));
v[y].push_back(make_pair(x,-z));
}
for (j=1;j<=n;j++) cost[j]=inf;
cost[source]=0;
dfs(source);
g<<cost[dest];
return 0;
}