結果

問題 No.3390 Public or Private
コンテスト
ユーザー ID 21712
提出日時 2025-12-19 02:29:39
言語 Go
(1.23.4)
結果
AC  
実行時間 745 ms / 2,000 ms
コード長 942 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 13,787 ms
コンパイル使用メモリ 244,780 KB
実行使用メモリ 46,032 KB
最終ジャッジ日時 2025-12-19 02:30:11
合計ジャッジ時間 30,968 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"
import . "os"
import bf "bufio"

func main() {
	rd := bf.NewReader(Stdin)
	var n,m int
	Fscan(rd,&n,&m)
	follow := map[int]map[int]bool{}
	for ; m > 0; m-- {
		var u,v int
		Fscan(rd,&u,&v)
		if fm, ok := follow[v]; ok {
			fm[u] = true
		} else {
			follow[v] = map[int]bool{}
			follow[v][u] = true
		}
	}
	private := map[int]bool{}
	var q int
	Fscan(rd,&q)
	for ; q > 0; q-- {
		var qi,ai,bi int
		Fscan(rd,&qi,&ai,&bi)
		switch qi {
			case 1:
				if fm, ok := follow[bi]; ok {
					if fm[ai] {
						delete(fm, ai)
					} else {
						fm[ai] = true
					}
				} else {
					follow[bi] = map[int]bool{}
					follow[bi][ai] = true
				}
			case 2:
				if private[ai] {
					delete(private, ai)
				} else {
					private[ai] = true
				}
		}
		ans := n - len(private)
		if !private[ai] {
			ans--
		}
		for x, _ := range private {
			if fm, ok := follow[x]; ok && fm[ai] {
				ans++
			}
		}
		Println(ans)
	}
}
0