Pagini recente » Cod sursa (job #1530380) | Cod sursa (job #1789004) | Cod sursa (job #1430419) | Cod sursa (job #2060956) | Cod sursa (job #1702870)
#include <iostream>
#include<fstream>
#include<vector>
#include<set>
using namespace std;
int n,m;
struct vecin
{
int numar;
int cost;
};
vector<vector<pair<int,int> > > graf;
set<pair<int,int> > myset;
int dist[50001];
void diskstra()
{int nr, dis;
while(myset.size())
{
dis=(*myset.begin()).first;
nr=(*myset.begin()).second;
myset.erase(*myset.begin());
for(int i=0;i<graf[nr].size();i++)
{
if(dist[graf[nr][i].second ]> dis+ graf[nr][i].first)
{
dist[graf[nr][i].second ]=dis+ graf[nr][i].first;
myset.insert(make_pair(dist[graf[nr][i].second ],graf[nr][i].second));
}
}
}
}
int main()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
f>>n>>m;
int a,b,c;
vecin t;
graf.resize(n);
for(int i=0;i<m;i++)
{
f>>a>>b>>c;
graf[a].push_back(make_pair(c,b));
}
for(int i=2;i<=n;i++)
{dist[i]=1000000000;
}
myset.insert(make_pair(0,1));
diskstra();
for(int i=2;i<=n;i++)
g<<dist[i]<<" ";
return 0;
}