Pagini recente » Cod sursa (job #1734929) | Cod sursa (job #2741030) | Cod sursa (job #1649608) | Cod sursa (job #2522129) | Cod sursa (job #1638708)
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
bool comp(pair<int,int> a, pair<int,int> b)
{
return a.second < b.second;
}
int main()
{
cout << "hunibuntu" << endl;
ifstream be("ubuntzei.in");
ofstream ki("ubuntzei.out");
int n,m,k;
be >> n >> m;
be >> k;
int sz[k];
for(int i = 0; i < k; i++)
be >> sz[i];
int a[n][n];
int d[n], volt[n];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
a[i][j]=0;
d[i] = -1;
volt[i] = 0;
}
for(int i = 0; i < m; i++)
{
int x, y, c;
be >> x >> y >> c;
a[x-1][y-1]=c;
a[y-1][x-1]=c;
}
d[0]=0;
queue<int> vsor;
vsor.push(0);
while(!vsor.empty())
{
int c = vsor.front();
vsor.pop();
volt[c] = true;
vector<pair<int,int> > lista;
for(int i = 0; i < n; i++)
{
//cout << a[c][i] << endl;
if(!volt[i] && a[c][i]>0 && (d[i]==-1 || d[i] > d[c]+a[c][i]))
{
lista.push_back(make_pair(i,a[c][i]));
d[i] = d[c]+a[c][i];
// if(i==n-1)
// {
// while(!vsor.empty())
// vsor.pop();
//
// break;
// }
}
}
sort(lista.begin(),lista.end(),comp);
for(int i = 0; i < lista.size(); i++)
{
vsor.push(lista[i].first);
}
// for(int i = 0; i < n; i++)
// cout << d[i] << " ";
// cout << endl;
}
ki << d[n-1] << endl;
return 0;
}