Pagini recente » Cod sursa (job #2392287) | Cod sursa (job #2622766) | Cod sursa (job #2038124) | Cod sursa (job #2529876) | Cod sursa (job #1113060)
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
int n,m,k;
int x,y,z;
int main(){
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
f >> n >> m >> k;
//cout << k;
int ubuntuk[k];
for (int i=0;i<k;i++){
f >> ubuntuk[i];
}
int a[n][n];
for (int i=0;i<n;i++){
for (int j=0;j<n;j++){
a[i][j]=-1;
}
}
for (int i=0;i<m;i++){
f >> x >> y >> z;
a[x-1][y-1]=z;
a[y-1][x-1]=z;
}
for (int i=0;i<n;i++){
for (int j=0;j<n;j++){
cout << a[i][j] << " ";
}
cout << endl;
}
bool megvan[n];
int tav[n];
int index=0;
int indexx=0;
int vegsout=0;
while(index!=k){
for (int i=0;i<n;i++){
megvan[i]=false;
tav[i]=INT_MAX;
}
x=indexx;
megvan[x]=true;
tav[x]=0;
int min,mini;
int valami=0;
for (int i=0;i<n-1;i++){
for (int j=0;j<n;j++){
if (a[x][j]!=-1&&(tav[j]>(tav[x]+a[j][x]))&&!megvan[j]){
tav[j]=tav[x]+a[x][j];
}
}
min=INT_MAX;
for (int j=0;j<n;j++){
if(min>tav[j]&&!megvan[j]){
min=tav[j];
mini=j;
}
}
megvan[mini]=true;
x=mini;
}
//cout << endl;
/*for (int i=0;i<n;i++){
cout<<tav[i]<< " ";
}*/
//cout << endl;
vegsout=vegsout+tav[ubuntuk[index]-1];
indexx=ubuntuk[index]-1;
index++;
}
for (int i=0;i<n;i++){
megvan[i]=false;
tav[i]=INT_MAX;
}
x=indexx;
megvan[x]=true;
tav[x]=0;
int min,mini;
int valami=0;
for (int i=0;i<n-1;i++){
for (int j=0;j<n;j++){
if (a[x][j]!=-1&&(tav[j]>(tav[x]+a[j][x]))&&!megvan[j]){
tav[j]=tav[x]+a[x][j];
}
}
min=INT_MAX;
for (int j=0;j<n;j++){
if(min>tav[j]&&!megvan[j]){
min=tav[j];
mini=j;
}
}
megvan[mini]=true;
x=mini;
}
//cout << endl;
/*for (int i=0;i<n;i++){
cout<<tav[i]<< " ";
}*/
//cout << endl;
vegsout=vegsout+tav[n-1];
g << vegsout;
}