Pagini recente » Cod sursa (job #2385043) | Cod sursa (job #1610997) | Cod sursa (job #375679) | Cod sursa (job #1807495) | Cod sursa (job #3258222)
#include <fstream>
#include <vector>
#define NMAX 50002
#define VMAX 2000000002
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int N,M,viz[NMAX];
vector <int>cost(NMAX,VMAX);
vector<vector<pair<int,int>>> graph(NMAX);
void citire()
{
int a,b,c;
fin>>N>>M;
for(int i=1; i<=M; i++)
{
fin>>a>>b>>c;
graph[a].push_back({b,c});
graph[b].push_back({a,c});
}
}
int main()
{
citire();
cost[1]=0;
for(int i=1; i<=N; i++)
{
int vmin,nod;
nod=0;
vmin=1000000002;
for(int j=1; j<=N; j++)
{
if(!viz[j] && cost[j]<vmin)
{
vmin=cost[j];
nod=j;
}
}
viz[nod]=1;
for(int j=1; j<=N; j++)
{
if(!viz[j])
{
for(int k=0; k<graph[nod].size(); k++)
{
if(graph[nod][k].first==j)
{
if(cost[j]>cost[nod]+graph[nod][k].second)
{
cost[j]=cost[nod]+graph[nod][k].second;
}
break;
}
}
}
}
}
for(int i=2; i<=N; i++)
{
if(cost[i]==VMAX)
{
cost[i]=0;
}
fout<< cost[i] << " ";
}
fout<< "\n";
return 0;
}