Pagini recente » Cod sursa (job #1553431) | Cod sursa (job #1877995) | Cod sursa (job #2019051) | Cod sursa (job #1168635) | Cod sursa (job #1651094)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ubuntuzei.in");
ofstream w("ubuntuzei.out");
int n, m, k, kt[16], nt[2000][2000], d[2000];
void beolvas() {
int x, y, r;
f>>n>>m>>k;
//kt[0]=1;
for (int i=0;i<=k;i++) f>>kt[i];
for (int i=0;i<n;i++) for (int j=0;j<n;j++) nt[i][j]=0;
for (int i=0;i<m;i++) {
f>>x>>y>>r;
nt[x-1][y-1]=r;
nt[y-1][x-1]=r;
}
}
void k0() {
int min, mini1, mini2;
bool b[n], kesz=false;
for (int i=1;i<n;i++) {d[i]=nt[0][i];b[i]=false;}
while (!kesz) {
cout<<"m ";
min=1001;
mini1=n;
for (int i=1;i<n;i++) {
if (min>d[i] && !b[i] && d[i]!=0) {
min=d[i];
mini1=i;
}
}
if (mini1!=n) {
b[mini1]=true;
min=1001;
mini2=n;
for (int i=0;i<n;i++) {
if (min>nt[mini1][i] && nt[mini1][i]!=0 && !b[i]) {
mini2=i;
min=nt[mini1][i];
}
}
if (mini2!=n && (d[mini1]+min<d[mini2] || d[mini2]==0)) d[mini2]=d[mini1]+min;
}
kesz=true;
for (int i=1;i<n;i++) if (!b[i]) kesz=false;
}
w<<d[n-1]<<" ";
}
int main()
{
beolvas();
if (k==0) k0();
//for (int i=0;i<n;i++) {for (int j=0;j<n;j++) cout<<nt[i][j]<<' '; cout<<"\n";}
f.close();
w.close();
}