AtCoder Regular Contest 090/AtCoder Beginner Contest 087 D問題 - People on a Line

Source

AtCoder Regular Contest 090
AtCoder Beginner Contest 087
問題文 (ARC)
問題文 (ABC)

問題概要

省略

解法

省略

cLayversion 20190902-1)のコード

C++に変換後のコードはこちら

int N, M, A[4d5], B[4d5], D[4d5];

wgraph<int> g;
int d[1d5];

void doit(int n, int b){
  int i, k;
  rep(i,g.es[n]){
    k = g.edge[n][i];
    if(k==b) continue;
    if(d[k]==int_inf){
      d[k] = d[n] + g.cost[n][i];
      doit(k, n);
    } else {
      if(d[k] != d[n] + g.cost[n][i]) wt("No"), exit(0);
    }
  }
}

{
  rd(N,M,(A--,B--,D)(M));
  rep(i,M) A[i+M] = B[i], B[i+M] = A[i], D[i+M] = -D[i];
  g.setDirectEdge(N, 2M, A, B, D);
  rep(i,N) d[i] = int_inf;
  rep(i,N) if(d[i]==int_inf) d[i]=0, doit(i, -1);
  wt("Yes");
}

Current time: 2021年09月28日07時31分57秒
Last modified: 2019年09月05日06時52分50秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Regular_Contest AtCoder_Beginner_Contest ARC090 ABC087 ARC_B ABC_D
トップページに戻る

Logged in as: unknown user (not login)

ログイン: