競技プログラミングで自分の環境で実行しているのですが、そのコードがsegmentation errorで実行出来ません。
私としてはsegmentation errorが何か分かっているつもり(真に分かっているなら解決できるはずなのですが…)ではあります。しかし、そのミスが分からないので質問するに至りました。
以下に問題があるコードを示します。
//code.cpp #include <bits/stdc++.h> #include <cmath> #include <set> #include <cstdio> #include <vector> #include <iostream> #include <utility> #define fir first #define sec second #define get(n) scanf("%d",&n); #define gets(s) string s;cin >> (s); #define All(s) (c).begin(), (c).end() #define chmin(x, y) x = min(x, y); #define chmax(x, y) x = max(x, y); #define rep(i, j) for (int (i)=0;(i)<(j);(i)++) #define repk(i, j, k) for(int (i)=(j);(i)<(k);(i)++) #define dump(x) std::cout << #x << " = " << (x) << std::endl; #define debug(x) cout << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl; using namespace std; typedef long long int ll; const int max_n = 2 * 1e5 + 1; const ll INF = 10241024; long double INFD = 100100100; vector<vector<int> > v(max_n); vector<pair<int, int> > q(max_n); int N ,Q; void input(){ cin >> N >> Q; dump(N);dump(Q); rep(i, N-1){ int a,b;cin >> a >> b; //dump(a);dump(b); v[a].push_back(b); } rep(i, Q){ int a, b;cin >> a >> b; q[i] = make_pair(a, b); } } void solve(){ input(); vector<int> counta(max_n, 0); rep(i, Q){ int p = q[i].fir;//codinate int x = q[i].sec;//value queue<int> q; counta[i] += x; rep(j,v[p].size()){ q.push(v[i][j]); } while(!q.empty()){ int k = q.front();q.pop(); //cout << "counta[" << k << "]is added " << x << endl; counta[k] += x; rep(l, v[k].size()){ q.push(v[k][l]); } } } for(int j=0;j<N;j++){ cout << counta[j] << endl; } return; } int main () { solve(); return 0; }
includeしているヘッダに違和感を感じた方は気にしないで下さい笑。自分でもそこは分かっています。)
他に開示すべき情報があれば、気軽に書いてください。
回答して頂ければ嬉しいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/05 08:19