Pagini recente » Cod sursa (job #1983127) | Cod sursa (job #2546394) | Cod sursa (job #2692703) | Cod sursa (job #815130) | Cod sursa (job #1361402)
#include <fstream>
#include <vector>
#include <utility>
using namespace std;
ifstream f;
ofstream g;
vector <pair <int , int> > v[50001];
int i,n,m,x,y,c,p,dmin[50001],oo=16000,pre[50001];
bool viz[50001];
int minim()
{
int mn=oo;
for(i=1;i<=n;i++)
if(dmin[i]<mn && viz[i]==false)
{
mn=dmin[i];
p=i;
}
return mn;
}
void dijkstra()
{
int mini,ok=1;
while(ok)
{
mini=minim();
if(mini<oo)
{
viz[p]=true;
for(i=0;i<v[p].size();i++)
if(!viz[v[p][i].first] && dmin[v[p][i].first]> dmin[p]+dmin[v[p][i].second])
{
dmin[v[p][i].first]=dmin[p]+v[p][i].second;
pre[v[p][i].first]=p;
}
}
else ok=0;
}
}
int main()
{
f.open("dijkstra.in");
f>>n>>m;
for(i=1;i<=n;i++)
dmin[i]=oo;
for(i=1;i<=n;i++)
{
f>>x>>y>>c;
v[x].push_back(make_pair(y,c));
v[y].push_back(make_pair(x,c));
if(x==1)
{
dmin[y]=c;
pre[y]=1;
}
else if(y==1)
{
dmin[x]=c;
pre[x]=1;
}
}
f.close();
viz[1]=true;
dmin[1]=0;
pre[1]=0;
dijkstra();
g.open("dijkstra.out");
for(i=2;i<=n;i++)
g<<dmin[i]<<" ";
g.close();
return 0;
}