Pagini recente » Cod sursa (job #2621773) | Cod sursa (job #1388903) | Cod sursa (job #1670391) | Cod sursa (job #719101) | Cod sursa (job #610793)
Cod sursa(job #610793)
#include<fstream>
#include<vector>
using namespace std;
vector <short> v[30010];
vector <short> d[30010];
short coada[100100];
int n,nr,x,y,dist[100100];
bool viz[30010];
void citire()
{
int i,m,a,b,c;
ifstream in("sate.in");
in>>n>>m>>x>>y;
for(i=0;i<m;i++)
{in>>a>>b>>c;
v[a].push_back(b);
d[a].push_back(c);
v[b].push_back(a);
d[b].push_back(c);
}
in.close();
}
int BFS()
{
int i,j,m,nod,vecin,lung;
for(i=1;i<nr;i++)
if(!viz[coada[i]])
{nod=coada[i];
viz[nod]++;
m=v[nod].size();
for(j=0;j<m;j++)
{vecin=v[nod][j];
lung=d[nod][j];
if(vecin<nod) lung*=-1;
coada[nr]=vecin;
dist[nr]=dist[i]+lung;
if(vecin==y)
return dist[nr];
else nr++;
}
}
return 0;
}
int main()
{
int w;
citire();
if(x>y) swap(x,y);
coada[1]=x;nr=2;
w=BFS();
ofstream out("sate.out");
out<<w<<'\n';
out.close();
return 0;
}