Pagini recente » Cod sursa (job #2167700) | Cod sursa (job #2671902) | Cod sursa (job #2609084) | Cod sursa (job #2123077) | Cod sursa (job #2498317)
#include <fstream>
#include <vector>
using namespace std;
vector < pair <int,int> > v[30001];
bool viz[30001];
int fin;
ifstream in ("sate.in");
ofstream out ("sate.out");
void drum(int nod,int dist)
{
viz[nod]=1;
if (nod==fin)
{
out<<dist;
}
else
{
int nod1,d;
for (int i=0;i<v[nod].size();i++)
{
nod1=v[nod][i].first;
d=v[nod][i].second;
if (viz[nod1]==0&&nod1<nod)
drum(nod1,dist-d);
else if (viz[nod1]==0&&nod1>nod)
drum(nod1,dist+d);
}
}
}
int main()
{
int n,m,st,a=0,b=0,c;
in>>n>>m>>st>>fin;
char ch;
in.get(ch);
while (m--)
{
a=b=c=0;
int cntspatiu=0;
while (in.get(ch)&&ch!='\n')
{
if (ch<='9'&&ch>='0')
{
if (cntspatiu==0)
a=a*10+ch-'0';
else if (cntspatiu==1)
b=b*10+ch-'0';
else
c=c*10+ch-'0';
}
else
cntspatiu++;
}
v[a].push_back({b,c});
v[b].push_back({a,c});
}
drum (st,0);
return 0;
}