Problem p02243 (C++) — buggy submission, verdict: Runtime Error

/*------------------------------
 * ???????????????????????????????±???????
 * ?????????????????????????????????3?????????????????????
 * 1.????????????????¢??????¨??????????¨?????????¢???????????¨???????§??????????????¬??????????????????????????????\\????????\\?????????????????????
 * 2.?§?????????????????????????????????????????????¨???????????????????????????
 * 3.??°????????????????????¨?????\\??£?????????????????????????¬??????????????????????????????\\????????\\????????????
 * ????????????????±????????????????????????????????????????????????????????????????3?????????????????????????????????????????????
 * ???????????????????????????????????§????????????????¶??????????????????¨??§????????????????????????2???????????§?????????
------------------------------*/
#include <iostream>
#include <list>    // list??¨
#include <queue>   // priority_queue??¨
#include <utility> // pair??¨
#define N 10000    // ?????????????????????????????°
#define INF (1 << 31 - 1);
using namespace std;

typedef pair<int, int>
    pii; // pair<int,int>?????????????????\\??????????????????????????§pii??¨??\\???
vector<pii> adj[N]; // ??£??\\?????????
bool color
    [N]; // ?????????????¢????????????????true???????????????????????°false???
int dist[N]; // ???????????????????????????????°??????????
int n;       // ???????????°
priority_queue<pii>
    pq; // <?????????,??????>??§?????????????????????????????????pair???????????????first????????????????????????

int dijkstra(int k) { // Shortest Pass
  // ??????k????§??????¨????????????????????¨?§????
  //-------------?????????????\\?-----------
  for (int i = 0; i < n; i++) {
    color[i] = false; // ?¢??????????????????????????¨??????§?????????
    dist[i] = INF;    // ????¢?????????°????????????
  }
  //-------------???????????°????¨????------------
  color[k] = true; // ?§????????¢???????????????????
  dist[k] = 0;     // ?§????????????????0??§?¨??????§????????¨?????????
  for (int i = 0; i < adj[k].size(); i++) {
    pq.push(
        adj[k][i]); // ?¬?????????????????????¨??????????????\\????????¶?????????
    // ????????????????????????0+adj[k][i].first(=dist[k]+adj[k][i].first)??§????????¨????????????????????????
    // !??¨???! adj?????\\??????????????§????????????-1???????????£?????????
  }
  //-------------??????????????¨????§????----------
  while (!pq.empty()) { // ???????????\\???????????????????????§
    pii temp = pq.top();
    pq.pop(); // ???????????\\????????????????????????????????????????????????
    temp.first = -temp.first; // ?????????????????????-1??????????¶????
    // cout<<"popping:"<<temp.first<<" "<<temp.second<<endl; //
    // ???????????°??¨?????????????????????????????????
    if (color[temp.second])
      continue; // ??¢????¢????????????????????????????
    // if(temp.first>=dist[temp.second])continue;	//
    // ?????????????????????????????¢????°?????????????????????????????±??????????????????¨???
    //------------?§??????§????????´????????????-------
    color[temp.second] = true; // ?¢???????????????????
    dist[temp.second] =
        temp.first; // ????°?????????????????????????(dist[temp.second]?????\\?????????????????????)
    // for(int i=0;i<n;i++) cout<<i<<":"<<((color[i])?"t ":"f ");	//
    // ???????????§?????¢?¨??¨???? cout<<endl;
    for (int i = 0; i < adj[temp.second].size(); i++) {
      // ?¬?????????????????¢????????????§???????????°???????????\\????????\\?????????
      // ?¢????????????????????????????????????????log2??¢?´¢?????????????????????????????????????????£??´????????????
      // ??????for?????¨??????17-20?????¨?¨????????????????????????????????????????????????§?????????
      if (!color[adj[temp.second][i].second])
        pq.push(make_pair(-dist[temp.second] + adj[temp.second][i].first,
                          adj[temp.second][i].second));
      // if(?????????????¢????)make_pair(????????????????????§????????????+???????????????????????????,???????????????)
    }
  }

  //------------???????????????????????????---------
  for (int i = 0; i < n; i++)
    cout << i << " " << dist[i] << endl;
  return 0;
}
int main(void) {
  int v, c; // ???????????????????????¨?????????????????????
  int u, k; // ??????????????¨????¬???°
  cin >> n; // ????????°?????\\???
  for (int i = 0; i < n; i++) { // ??£??\\???????????\\???
    cin >> u >> k;              // ???????????????u??¨????¬???°k
    for (int j = 0; j < k; j++) {
      cin >> v >> c;                      // ?????????????????¨?????????
      adj[u].push_back(make_pair(-c, v)); // ????????????first????´?
      // -1?????????????????¨??§???????????????????????????
    }
  }
  dijkstra(0); // 0?§?????????????????????¨????±???????
  return 0;
}

Error: 0

Fixed submission:

#include <stdio.h>
#define INF 10000000
typedef struct {
  int node;
  int cost;
} List;

int dist[101];
List list[101][101];
int kazu[101];

int n;

void walk(int x, int step) {
  dist[x] = step;
  for (int i = 0; i < kazu[x]; i++) {
    if (dist[list[x][i].node] > step + list[x][i].cost)
      walk(list[x][i].node, step + list[x][i].cost);
  }
}

int main(void) {
  int i, j, w;
  int num;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &num);
    scanf("%d", kazu + num);
    for (j = 0; j < kazu[num]; j++)
      scanf("%d %d", &(list[num][j].node), &list[num][j].cost);
  }
  for (i = 0; i < n; i++)
    dist[i] = INF;
  walk(0, 0);

  for (i = 0; i < n; i++) {
    printf("%d %d\\n", i, dist[i]);
  }
  return 0;
}