Submission #1784451


Source Code Expand

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;

typedef long long s64;

inline int getint()
{
	static char c;
	while ((c = getchar()) < '0' || c > '9');

	int res = c - '0';
	while ((c = getchar()) >= '0' && c <= '9')
		res = res * 10 + c - '0';
	return res;
}

const int MaxN = 100000;
const int MaxM = 100000;

int n, m;

struct halfEdge
{
	int v, w;
	halfEdge *next;
};
halfEdge adj_pool[MaxM * 2], *adj_tail = adj_pool;
halfEdge *adj[MaxN + 1];

inline void addEdge(const int &u, const int &v, const int &w)
{
	adj_tail->v = v, adj_tail->w = w;
	adj_tail->next = adj[u], adj[u] = adj_tail++;
}

int num[4];
bool inv;

int col[MaxN + 1];

void dfs(const int &u, const int &now)
{
	col[u] = now;
	++num[col[u]], ++num[3];

	for (halfEdge *e = adj[u]; e; e = e->next)
	{
		int l = (now + e->w) % 3;
		if (!~col[e->v])
			dfs(e->v, l);
		else if (col[e->v] != l)
			inv = true;
	}
}

int main()
{
	cin >> n >> m;
	for (int i = 0; i < m; ++i)
	{
		int u = getint(), v = getint();
		addEdge(u, v, 1);
		addEdge(v, u, 2);
	}

	for (int u = 1; u <= n; ++u)
		col[u] = -1;

	s64 res = 0;
	for (int u = 1; u <= n; ++u)
		if (!~col[u])
		{
			inv = false;
			num[0] = num[1] = 0;
			num[2] = num[3] = 0;

			dfs(u, 0);

			if (inv)
				res += (s64)num[3] * num[3];
			else if (!num[0] || !num[1] || !num[2])
				res += num[3] - 1;
			else
			{
				res += (s64)num[0] * num[1];
				res += (s64)num[1] * num[2];
				res += (s64)num[2] * num[0];
			}
		}

	cout << res << endl;

	return 0;
}

Submission Info

Submission Time
Task F - Blackout
User InvUsr
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1647 Byte
Status WA
Exec Time 19 ms
Memory 9216 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1700
Status
AC × 3
AC × 52
WA × 1
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt
Case Name Status Exec Time Memory
0_00.txt AC 1 ms 256 KB
0_01.txt AC 1 ms 256 KB
0_02.txt AC 1 ms 256 KB
1_00.txt AC 1 ms 256 KB
1_01.txt AC 2 ms 640 KB
1_02.txt AC 13 ms 4480 KB
1_03.txt AC 15 ms 9216 KB
1_04.txt AC 15 ms 9216 KB
1_05.txt AC 15 ms 9216 KB
1_06.txt AC 15 ms 9216 KB
1_07.txt AC 15 ms 9216 KB
1_08.txt AC 14 ms 9216 KB
1_09.txt AC 15 ms 9216 KB
1_10.txt AC 15 ms 9216 KB
1_11.txt AC 19 ms 9216 KB
1_12.txt AC 15 ms 9216 KB
1_13.txt WA 15 ms 9216 KB
1_14.txt AC 11 ms 4480 KB
1_15.txt AC 10 ms 4480 KB
1_16.txt AC 10 ms 4480 KB
1_17.txt AC 9 ms 3328 KB
1_18.txt AC 19 ms 5760 KB
1_19.txt AC 18 ms 5760 KB
1_20.txt AC 17 ms 5632 KB
1_21.txt AC 18 ms 5760 KB
1_22.txt AC 18 ms 5760 KB
1_23.txt AC 18 ms 5760 KB
1_24.txt AC 17 ms 5632 KB
1_25.txt AC 17 ms 5760 KB
1_26.txt AC 18 ms 5760 KB
1_27.txt AC 19 ms 5632 KB
1_28.txt AC 18 ms 5632 KB
1_29.txt AC 17 ms 5760 KB
1_30.txt AC 17 ms 5632 KB
1_31.txt AC 17 ms 5760 KB
1_32.txt AC 18 ms 5760 KB
1_33.txt AC 18 ms 5760 KB
1_34.txt AC 17 ms 5632 KB
1_35.txt AC 16 ms 5120 KB
1_36.txt AC 17 ms 5504 KB
1_37.txt AC 18 ms 5760 KB
1_38.txt AC 16 ms 4864 KB
1_39.txt AC 16 ms 4608 KB
1_40.txt AC 18 ms 5760 KB
1_41.txt AC 18 ms 5760 KB
1_42.txt AC 16 ms 5120 KB
1_43.txt AC 17 ms 5248 KB
1_44.txt AC 18 ms 5760 KB
1_45.txt AC 15 ms 4352 KB
1_46.txt AC 18 ms 5760 KB
1_47.txt AC 18 ms 5760 KB
1_48.txt AC 16 ms 4992 KB
1_49.txt AC 17 ms 5504 KB