Pagini recente » Cod sursa (job #734995) | Cod sursa (job #632354) | Cod sursa (job #2142657) | Cod sursa (job #858443) | Cod sursa (job #2061109)
#include <fstream>
#include <vector>
using namespace std;
ifstream f ("traseu.in");
ofstream g ("traseu.out");
const int nmax=63;
vector <int> v[nmax];
vector <int> cost[nmax];
vector <int> val[nmax];
int n,m,a,b,c,usu,sol,viz[nmax*nmax],k,nr[nmax];
void solve(int nod,int st,int ramas,int cst)
{
if(nod==st&&ramas==0)
{
sol=min(sol,cst);
return;
}
for(int i=0;i<v[nod].size();++i)
{
if(viz[val[nod][i]]<2)
{
++viz[val[nod][i]];
if(viz[val[nod][i]]==1) --ramas;
solve(v[nod][i],st,ramas,cst+cost[nod][i]);
--viz[val[nod][i]];
if(viz[val[nod][i]]==0) ++ramas;
}
}
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;++i)
{
f>>a>>b>>c;
++nr[a];
--nr[b];
v[a].push_back(b);
cost[a].push_back(c);
val[a].push_back(++k);
}
sol=1e9;
for(int i=1;i<=n;++i) if(nr[i]>0) solve(i,i,k,0);
g<<sol;
return 0;
}