Submission #530121


Source Code Expand

#include <stdio.h>
#include <cstring>
#include <vector>
#include <stack>
#include <map>
#define MAX_N 100000
#define MAX_X 1000000000
 
using namespace std;
 
int N, X;
struct edge {
  int dist;
  int cost;
};
vector<edge> graph[MAX_N];
 
void load() {
  scanf("%d %d", &N, &X);
  for(int i=0; i<N-1; i++) {
    int x, y;
    long c;
    scanf("%d %d %ld", &x, &y, &c);
    graph[x-1].push_back((edge) { y-1, c });
    graph[y-1].push_back((edge) { x-1, c });
  }
}
 
long long solve() {
  stack<int> s;
  map<long, int> counter;
  counter[0] = 1;
  long vals[N];
  long long ans=0;
  s.push(0);
  vals[0] = 0;
  char mark[N];
  memset(mark, 0, sizeof(char)*N);
  while(!s.empty()) {
    int i = s.top();
    mark[i] = 1;
    s.pop();
    vector<edge> v = graph[i];
    for(unsigned int j=0; j<v.size(); j++) {
      edge e = v[j];
      if( mark[e.dist] ) continue;
      long val = vals[i] ^ e.cost;
      vals[e.dist] = val;
      s.push(e.dist);
      ans += counter[val ^ X];
      counter[val] += 1;
    }
  }
  return ans;
}
 
int main(void) {
  load();
  printf("%lld\n", solve());
  return 0;
}

Submission Info

Submission Time
Task C - エックスオア多橋君
User lackdog
Language C++11 (GCC 4.9.2)
Score 100
Code Size 1165 Byte
Status AC
Exec Time 318 ms
Memory 20528 KiB

Compile Error

./Main.cpp: In function ‘void load()’:
./Main.cpp:24:42: warning: narrowing conversion of ‘c’ from ‘long int’ to ‘int’ inside { } [-Wnarrowing]
     graph[x-1].push_back((edge) { y-1, c });
                                          ^
./Main.cpp:25:42: warning: narrowing conversion of ‘c’ from ‘long int’ to ‘int’ inside { } [-Wnarrowing]
     graph[y-1].push_back((edge) { x-1, c });
                                          ^
./Main.cpp:19:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d", &N, &X);
                         ^
./Main.cpp:23:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %ld", &x, &y, &c);
                                   ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 27
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 47 ms 3544 KiB
subtask0_sample_02.txt AC 39 ms 3532 KiB
subtask0_sample_03.txt AC 39 ms 3528 KiB
subtask1_01.txt AC 38 ms 3476 KiB
subtask1_02.txt AC 42 ms 3520 KiB
subtask1_03.txt AC 318 ms 20528 KiB
subtask1_04.txt AC 299 ms 20528 KiB
subtask1_05.txt AC 297 ms 20436 KiB
subtask1_06.txt AC 109 ms 7504 KiB
subtask1_07.txt AC 132 ms 8020 KiB
subtask1_08.txt AC 130 ms 7980 KiB
subtask1_09.txt AC 190 ms 9000 KiB
subtask1_10.txt AC 189 ms 9048 KiB
subtask1_11.txt AC 39 ms 3536 KiB
subtask1_12.txt AC 38 ms 3544 KiB
subtask1_13.txt AC 154 ms 8108 KiB
subtask1_14.txt AC 152 ms 8024 KiB
subtask1_15.txt AC 54 ms 4688 KiB
subtask1_16.txt AC 54 ms 4692 KiB
subtask1_17.txt AC 52 ms 4652 KiB
subtask1_18.txt AC 53 ms 4688 KiB
subtask1_19.txt AC 54 ms 4764 KiB
subtask1_20.txt AC 53 ms 4672 KiB
subtask1_21.txt AC 52 ms 4696 KiB
subtask1_22.txt AC 55 ms 4676 KiB
subtask1_23.txt AC 56 ms 4692 KiB
subtask1_24.txt AC 59 ms 4656 KiB