Cod sursa(job #2291987)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 28 noiembrie 2018 20:56:47
Problema Team Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("team.in");
ofstream g ("team.out");
const int nmax=5e3+3;
int t[nmax],d[nmax][nmax],v[nmax][nmax],p,n,m,a,b,c;
int dfs(int st,int dr,int nod)
{
    if(st>=dr) return 0;
    int sol=2e9;
    for(int i=st;i<=dr;++i)
    {
        sol=min(sol,dfs(st,i-1,t[i])+dfs(i+1,dr,t[i])+v[nod][t[i]]);
    }
    return sol;
}
int main()
{
    ios::sync_with_stdio(false);
    f>>p>>n>>m;
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=n;++j)
        {
            d[i][j]=2e9;
            v[i][j]=1e9;
        }
    }
    for(int i=1;i<=m;++i)
    {
        f>>a>>b>>c;
        v[a][b]=v[b][a]=c;
    }
    for(int i=1;i<=p;++i) f>>t[i];
    for(int k=1;k<=n;++k)
    {
        for(int i=1;i<n;++i)
        {
            for(int j=i+1;j<=n;++j)
            {
                if(v[i][k]+v[k][j]<v[i][j]) v[i][j]=v[i][k]+v[k][j];
            }
        }
    }
    g<<dfs(1,p,1);
    return 0;
}