結果

問題 No.3390 Public or Private
コンテスト
ユーザー pengin_2000
提出日時 2025-11-28 22:58:12
言語 C
(gcc 13.3.0)
結果
AC  
実行時間 1,136 ms / 2,000 ms
コード長 1,082 bytes
コンパイル時間 389 ms
コンパイル使用メモリ 27,812 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-11-28 22:58:55
合計ジャッジ時間 23,472 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 27
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function ‘main’:
main.c:7:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    7 |         scanf("%d %d", &n, &m);
      |         ^~~~~~~~~~~~~~~~~~~~~~
main.c:11:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   11 |                 scanf("%d %d", &u[i], &v[i]);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.c:19:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   19 |         scanf("%d", &Q);
      |         ^~~~~~~~~~~~~~~
main.c:22:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   22 |                 scanf("%d %d %d", &q, &a, &b);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ソースコード

diff #
raw source code

#include<stdio.h>
int u[400005], v[400005], w[400005], wv[400005];
int s[3003], ss;
int main()
{
	int n, m;
	scanf("%d %d", &n, &m);
	int i;
	for (i = 0; i < m; i++)
	{
		scanf("%d %d", &u[i], &v[i]);
		u[i]--;
		v[i]--;
		w[i] = 1;
		wv[i] = 1;
	}
	int cnt = n;
	int Q, q, a, b, c;
	scanf("%d", &Q);
	for (; Q > 0; Q--)
	{
		scanf("%d %d %d", &q, &a, &b);
		a--;
		b--;
		if (q == 1)
		{
			c = 0;
			for (i = 0; i < m; i++)
			{
				if (u[i] != a || v[i] != b)
					continue;
				c++;
				w[i] ^= 1;
			}
			if (c == 0)
			{
				u[m] = a;
				v[m] = b;
				w[m] = 1;
				wv[m] = 1;
				for (i = 0; i < ss; i++)
					if (s[i] == b)
						wv[m] ^= 1;
				m++;
			}
		}
		else
		{
			s[ss++] = a;
			for (i = 0; i < m; i++)
				if (v[i] == a)
					wv[i] ^= 1;
			c = 0;
			for (i = 0; i < ss; i++)
				if (s[i] == a)
					c++;
			if (c % 2 > 0)
				cnt--;
			else
				cnt++;
		}
		c = 0;
		for (i = 0; i < ss; i++)
			if (s[i] == a)
				c++;
		c = cnt - (c + 1) % 2;
		for (i = 0; i < m; i++)
			if (u[i] == a && wv[i] == 0 && w[i] == 1)
				c++;
		printf("%d\n", c);
	}
	return 0;
}
0