Language: C++

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <climits>
#include <cfloat>
#include <ctime>
#include <cassert>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <complex>
#include <stack>
#include <queue>
#include <numeric>
#include <list>
#include <iomanip>
#include <fstream>
#include <bitset>
&#160;
using namespace std;
&#160;
typedef long long ll;
&#160;
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define foreach(it, c) for (__typeof__((c).begin()) it=(c).begin(); it != (c).end(); ++it)
#define CL(arr, val) memset(arr, val, sizeof(arr))
#define ten(n) ((ll)(1e##n))
#define pb push_back
&#160;
template <typename T> void chmax(T& a, const T& b) { a = max(a, b); }
template <typename T> void chmin(T& a, const T& b) { a = min(a, b); }
&#160;
template <typename T> void uniq(T& c) { sort(c.begin(), c.end()); c.erase(unique(c.begin(), c.end()), c.end()); }
&#160;
typedef pair<ll, int> pint;
typedef pair<pint, int> P;
&#160;
int main()
{
&#160;&#160;&#160;&#160;int n, m, l, rank;
&#160;&#160;&#160;&#160;while (cin >> n >> m >> l >> rank, n)
&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;--u, --v;
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;g[u].pb(pint(c, v));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;g[v].pb(pint(c, u));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int start, goal;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> start >> goal;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;--start, --goal;
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int ball[55] = {};
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;rep(i, l)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int b;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> b;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;--b;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ball[b] |= 1 << i;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<ll> dp[55][1 << 7];
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;priority_queue<P, vector<P>, greater<P> > q;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;// dp[start][ball[start]].pb(0);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;q.push(P(pint(0, ball[start]), start));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (!q.empty())
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int pos = q.top().second;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ll cost = q.top().first.first;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int bal = q.top().first.second;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;q.pop();
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (dp[pos][bal].size() == rank)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;continue;
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;dp[pos][bal].pb(cost);
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach (it, g[pos])
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ll ncost = cost + it->first;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int npos = it->second;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int nbal = bal | ball[npos];
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (dp[npos][nbal].size() < rank)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;q.push(P(pint(ncost, nbal), npos));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const int all_ball = (1 << l) - 1;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (dp[goal][all_ball].size() == rank)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout << dp[goal][all_ball][rank - 1] << endl;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cout << "NA" << endl;
&#160;&#160;&#160;&#160;}
}

Compiler output:
a.cc:27:2: error: stray '#' in program
   27 | &#160;
      |  ^
a.cc:29:2: error: stray '#' in program
   29 | &#160;
      |  ^
a.cc:31:2: error: stray '#' in program
   31 | &#160;
      |  ^
a.cc:37:2: error: stray '#' in program
   37 | &#160;
      |  ^
a.cc:40:2: error: stray '#' in program
   40 | &#160;
      |  ^
a.cc:42:2: error: stray '#' in program
   42 | &#160;
      |  ^
a.cc:45:2: error: stray '#' in program
   45 | &#160;
      |  ^
a.cc:48:2: error: stray '#' in program
   48 | &#160;&#160;&#160;&#160;int n, m, l, rank;
      |  ^
a.cc:48:8: error: stray '#' in program
   48 | &#160;&#160;&#160;&#160;int n, m, l, rank;
      |        ^
a.cc:48:14: error: stray '#' in program
   48 | &#160;&#160;&#160;&#160;int n, m, l, rank;
      |              ^
a.cc:48:20: error: stray '#' in program
   48 | &#160;&#160;&#160;&#160;int n, m, l, rank;
      |                    ^
a.cc:49:2: error: stray '#' in program
   49 | &#160;&#160;&#160;&#160;while (cin >> n >> m >> l >> rank, n)
      |  ^
a.cc:49:8: error: stray '#' in program
   49 | &#160;&#160;&#160;&#160;while (cin >> n >> m >> l >> rank, n)
      |        ^
a.cc:49:14: error: stray '#' in program
   49 | &#160;&#160;&#160;&#160;while (cin >> n >> m >> l >> rank, n)
      |              ^
a.cc:49:20: error: stray '#' in program
   49 | &#160;&#160;&#160;&#160;while (cin >> n >> m >> l >> rank, n)
      |                    ^
a.cc:50:2: error: stray '#' in program
   50 | &#160;&#160;&#160;&#160;{
      |  ^
a.cc:50:8: error: stray '#' in program
   50 | &#160;&#160;&#160;&#160;{
      |        ^
a.cc:50:14: error: stray '#' in program
   50 | &#160;&#160;&#160;&#160;{
      |              ^
a.cc:50:20: error: stray '#' in program
   50 | &#160;&#160;&#160;&#160;{
      |                    ^
a.cc:51:2: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |  ^
a.cc:51:8: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |        ^
a.cc:51:14: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |              ^
a.cc:51:20: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |                    ^
a.cc:51:26: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |                          ^
a.cc:51:32: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |                                ^
a.cc:51:38: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |                                      ^
a.cc:51:44: error: stray '#' in program
   51 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;vector<pint> g[55]; // (cost, to)
      |                                            ^
a.cc:52:2: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |  ^
a.cc:52:8: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |        ^
a.cc:52:14: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |              ^
a.cc:52:20: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |                    ^
a.cc:52:26: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |                          ^
a.cc:52:32: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |                                ^
a.cc:52:38: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |                                      ^
a.cc:52:44: error: stray '#' in program
   52 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while (m--)
      |                                            ^
a.cc:53:2: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |  ^
a.cc:53:8: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |        ^
a.cc:53:14: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |              ^
a.cc:53:20: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |                    ^
a.cc:53:26: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |                          ^
a.cc:53:32: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |                                ^
a.cc:53:38: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |                                      ^
a.cc:53:44: error: stray '#' in program
   53 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
      |                                            ^
a.cc:54:2: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |  ^
a.cc:54:8: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |        ^
a.cc:54:14: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |              ^
a.cc:54:20: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                    ^
a.cc:54:26: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                          ^
a.cc:54:32: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                                ^
a.cc:54:38: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                                      ^
a.cc:54:44: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                                            ^
a.cc:54:50: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                                                  ^
a.cc:54:56: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                                                        ^
a.cc:54:62: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                                                              ^
a.cc:54:68: error: stray '#' in program
   54 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;int u, v, c;
      |                                                                    ^
a.cc:55:2: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |  ^
a.cc:55:8: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |        ^
a.cc:55:14: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |              ^
a.cc:55:20: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                    ^
a.cc:55:26: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                          ^
a.cc:55:32: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                                ^
a.cc:55:38: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                                      ^
a.cc:55:44: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                                            ^
a.cc:55:50: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                                                  ^
a.cc:55:56: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                                                        ^
a.cc:55:62: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                                                              ^
a.cc:55:68: error: stray '#' in program
   55 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cin >> u >> v >> c;
      |                                                                    ^
a.cc:56:2: error: stray '#' in program
   56 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;--u, --v;
      |  ^
a.cc:56:8: error: stray '#' in program
   56 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;--u, --v;
      |        ^
a.cc:56:14: error: stray '#' in program
   56 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;--u, --v;
      |              ^
a.cc:56:20: error: stray '#' in program
   56 | &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;--u, --v;
      |                    ^
a.cc:56:26: error: stray '#' in program
   56 | &#160;&#160;&#160;&#160;&#16