なぜわたしの解答で通らないかわかりません。テストケース30個中、9個でWAとなります。教えてくれるとうれしいです。
問題
問題文
N要素からなる整数列 D1,...,DNが与えられます。頂点に 1から Nの番号が付けられた N 頂点からなる木であって、 以下の条件をみたすものの個数を 998244353 で割ったあまりを求めてください。1 以上 N 以下の任意の整数 i に対して、頂点 1 と頂点 i の距離が Diである。
注記
N 頂点の木とは N 頂点 N−1 辺からなる連結無向グラフのことであり、2 頂点の距離とは一方から他方への最短路に用いられる辺の個数を指します。
2 つの木が異なるとは、ある 2 頂点 x, y が存在して、x と y の間に一方の木では辺が存在し、 もう一方の木では辺が存在しないことを指します。
制約
1≦N≦10の5乗
0≦Di≦N−1
c++
1#include<iostream> 2#include<cmath> 3using namespace std; 4 5int main(){ 6 int N; 7 long long ans = 1; 8 cin >> N; 9 int D[N], count_D[N], max_D = 0; 10 for(int i=0; i<N; i++) count_D[i] = 0; 11 for(int i=0; i<N; i++){ 12 cin >> D[i]; 13 count_D[D[i]] += 1; 14 if(max_D < D[i]) max_D = D[i]; 15 } 16 if(count_D[0] != 1 || D[0] != 0){ 17 cout << 0 << endl; 18 return 0; 19 }else{ 20 for(int i=0; i<max_D; i++){ 21 ans *= pow(count_D[i], count_D[i+1]); 22 } 23 printf("%lld\n", ans%998244353); 24 return 0; 25 } 26}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/10 00:28