Pagini recente » Cod sursa (job #958807) | Cod sursa (job #1642330) | Cod sursa (job #1012721) | Cod sursa (job #2096277) | Cod sursa (job #1395808)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int main()
{
fstream f("sate.in",ios::in);
ofstream g("sate.out");
if(f==NULL) cout<<"eroare";
queue<int> q;
vector<int> v[100];
vector<int> distanta[20];
int n,m,viz[100],x,y,i,j,a,b,inceput,sfarsit,d,dist=0;
f>>n>>m>>inceput>>sfarsit;
for(i=1;i<=n;i++) viz[i]=0;
for(i=0;i<m;i++)
{
f>>x>>y>>d;
cout<<x<<" "<<y<<" "<<d<<" ";
v[x].push_back(y);
distanta[x].push_back(d);
v[y].push_back(x);
distanta[y].push_back(d);
}
for(i=1;i<=n;i++)
{
cout<<i<<":";
for(j=0;j<v[i].size();j++) cout<<v[i][j]<<" ";
cout<<endl;
}
for(i=1;i<=m;i++)
{
cout<<i<<":";
for(j=0;j<distanta[i].size();j++) cout<<distanta[i][j]<<" ";
cout<<endl;
}
q.push(inceput);
viz[inceput]=1;
while(!q.empty())
{
a=q.front();
q.pop();
for(i=0;i<v[a].size();i++)
{
b=v[a][i];
d=distanta[a][i];
if(viz[b]==0)
{
q.push(b);
// tata[b]=a;
viz[b]=1;
// nr++;
// parc[nr]=b;
if(a>b) dist=dist-d;
else
if(a<b) dist=dist+d;
if(b==sfarsit)break;}
}
}
g<<"Distanta este:"<<dist;
return 0;
}