Pagini recente » Cod sursa (job #1031770) | Cod sursa (job #523890) | Cod sursa (job #2759894) | Cod sursa (job #1851687) | Cod sursa (job #818328)
Cod sursa(job #818328)
#include<fstream>
#include<queue>
using namespace std;
struct muchie
{
int vf,cost;
};
muchie makeMuchie(int vf,int cost)
{
muchie a;
a.vf=vf;
a.cost=cost;
return a;
}
const int N=30001;
int n , m , pozstart ,pozfinal, cost[N],x,y;
vector <muchie> a[N];
ifstream in ("sate.in");
ofstream out("sate.out");
queue <int> coada;
void leeus()
{
coada.push(pozstart);
while(!coada.empty())
{
int elem=coada.front();
coada.pop();
for(int i=0;i<a[elem].size();i++)
{
int muchie=a[elem][i].vf;
int costMuchie=a[elem][i].cost;
int costnou=cost[elem];
if(muchie<elem)
costnou-=costMuchie;
else
costnou+=costMuchie;
if(cost[muchie]<costnou || cost[muchie]==-1)
{
cost[muchie]=costnou;
coada.push(muchie);
}
}
}
}
int main()
{
in>>n>>m>>pozstart>>pozfinal;
for(int i=1;i<=m;i++)
{
int x,y,cost;
in>>x>>y>>cost;
a[x].push_back(makeMuchie(y,cost));
a[y].push_back(makeMuchie(x,cost));
}
for(int i=1;i<=n;i++)
cost[i]=-1;
leeus();
out<<cost[pozfinal]+1;
}