結果
問題 |
No.2494 Sum within Components
|
ユーザー |
![]() |
提出日時 | 2025-05-02 22:56:44 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 295 ms / 2,000 ms |
コード長 | 863 bytes |
コンパイル時間 | 13,111 ms |
コンパイル使用メモリ | 236,352 KB |
実行使用メモリ | 18,780 KB |
最終ジャッジ日時 | 2025-05-02 22:57:00 |
合計ジャッジ時間 | 14,459 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
package main import . "fmt" import . "os" import bf "bufio" func main() { rd := bf.NewReader(Stdin) var n, m int Fscan(rd,&n,&m) a := make([]int, n+1) for i := range a[1:] { Fscan(rd,&a[i+1]) } g := make([][]int, n+1) for i := 0; i < m; i++ { var u,v int Fscan(rd,&u,&v) g[u] = append(g[u], v) g[v] = append(g[v], u) } score := make([]int, n+1) visited := make([]int, n+1) const Mod = 998244353 ans := 1 for i := 1; i <= n; i++ { if visited[i] > 0 { ans = ans*score[visited[i]]%Mod continue } visited[i] = i score[i] = a[i]%Mod stk := []int{i} for len(stk) > 0 { l := len(stk)-1 p := stk[l] stk = stk[:l] for _, e := range g[p] { if visited[e] > 0 { continue } visited[e] = i score[i] = (score[i]+a[e])%Mod stk = append(stk, e) } } ans = ans*score[i]%Mod } Println(ans) }