Cod sursa(job #890887)

Utilizator ndranrawPetrisor Andrei ndranraw Data 25 februarie 2013 12:39:58
Problema Ubuntzei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
int a[2001][2001],n,m,b[17],k,sum;
int const MAX=999999;
void init()
{f>>n>>m>>k;
    int i,j;
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    if(i==j) a[i][j]=0;
    else a[i][j]=MAX;
}
void citire()
{int c,d,e;
for(int i=1;i<=k;i++)
f>>b[i];
for(int i=1;i<=m;i++)
{f>>d>>e>>c;
a[d][e]=c;a[e][d]=c;
}
}
void transf()
{for(int d=1;d<=n;d++)
 for(int i=1;i<=n;i++)
 for(int j=1;j<=n;j++)
 if(a[i][d]+a[d][j]<a[i][j])
 a[i][j]=a[i][d]+a[d][j];
}
void solutia()
{sum=a[1][b[1]];
    for(int i=1;i<k;i++)
    sum+=a[b[i]][b[i+1]];
    sum+=a[b[k]][n];
}
int main()
{
    init(); citire(); transf();solutia();g<<sum;f.close();g.close();
}