Pagini recente » Cod sursa (job #80147) | Cod sursa (job #233542) | Cod sursa (job #2939544) | Cod sursa (job #2402144) | Cod sursa (job #1681861)
#include <fstream>
#include<vector>
#include<utility>
using namespace std;
vector< vector <pair <int, int> > > a;
int n,m;
void dijkstra()
{
for(int i=0;i<a[0].size();i++)
{
for(int j=0;j<a[0].size();j++)
{
if(i!=j)
{
for(int k=0;k<a[a[0][j].first].size();k++)
{
if(a[a[0][j].first][k].first==a[0][i].first&&a[0][i].second>a[0][j].second+a[a[0][j].first][k].second)
{
a[0][i].second=a[0][j].second+a[a[0][j].first][k].second;
break;
}
}
}
}
}
}
int main()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
f>>n>>m;
a.resize(n);
for(int i=1;i<n;i++)
{
a[0].push_back(make_pair(i,250001));
}
for(int i=1;i<=m;i++)
{
int x,y,c;
f>>x>>y>>c;
x--;
y--;
if(x==0)
{
for(int j=0;j<a[0].size();j++)
{
if(a[0][j].first==y)
a[0][j].second=c;
}
}
else
a[x].push_back(make_pair(y,c));
}
dijkstra();
for(int i=0;i<a[0].size();i++)
{
g<<a[0][i].second<<" ";
}
return 0;
}