Pagini recente » Cod sursa (job #390427) | Cod sursa (job #2105911) | Cod sursa (job #1659003) | Cod sursa (job #1458918) | Cod sursa (job #2380606)
#include <fstream>
#include <vector>
using namespace std;
vector <pair<int,int>>graf[20];
int dist[20];
int n,m,a,b,c,mi;
void dfs(int nod,int nr)
{
for(int i=0;i<graf[nod].size();i++)
{
if((dist[graf[nod][i].first]==0||dist[graf[nod][i].first]>dist[nod]+graf[nod][i].second)&&graf[nod][i].first!=1)
{
dist[graf[nod][i].first]=dist[nod]+graf[nod][i].second;
dfs(graf[nod][i].first,nr+1);
}
if(nr==n&&graf[nod][i].first==1)
{
dist[graf[nod][i].first]=dist[nod]+graf[nod][i].second;
if(mi==0||mi>dist[1])
mi=dist[1];
dist[1]=0;
}
if(i==graf[nod].size()-1)
dist[nod]=0;
}
}
int main()
{
ifstream in("hamilton.in");
ofstream out("hamilton.out");
in>>n>>m;
for(int i=1;i<=m;i++)
{
in>>a>>b>>c;
graf[a+1].push_back(make_pair(b+1,c));
}
dfs(1,1);
out<<mi;
return 0;
}