8193 2024. 01. 12 17:46:54 Gervid Tom és Jerry 1 (80) cpp17 Időlimit túllépés 64/80 578ms 19732 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <limits.h>
#include <algorithm>
#include <math.h>

using namespace std;

int main()
{
	int n, m, tstart, jstart, jtrys, hole, i, j, node1, node2, type;
	cin >> n >> m >> tstart >> jtrys >> hole;
	tstart--, hole--;

	vector<vector<int>> jg(n);
	map<int, vector<int>> tg;

	for (i = 0; i < m; i++)
	{
		cin >> node1 >> node2 >> type;
		node1--, node2--;

		jg[node1].push_back(node2);
		jg[node2].push_back(node1);

		if (type == 2)
		{
			if (!tg.count(node1))
			{
				tg[node1] = {};
			}
			if (!tg.count(node2))
			{
				tg[node2] = {};
			}

			tg[node1].push_back(node2);
			tg[node2].push_back(node1);
		}
	}

	queue<int> q;
	q.push(tstart);

	vector<int> tdist(n, INT_MAX);
	tdist[tstart] = 0;

	while (q.size() > 0)
	{
		for (i = 0; i < tg[q.front()].size(); i++)
		{
			if (tdist[tg[q.front()][i]] == INT_MAX) //!been
			{
				tdist[tg[q.front()][i]] = tdist[q.front()] + 1;
				q.push(tg[q.front()][i]);
			}
		}

		q.pop();
	}

	for (j = 0; j < jtrys; j++)
	{
		cin >> jstart;
		jstart--;

		q.push(jstart);
		q.push(-1);

		int distance = 1;

		set<int> been;
		been.insert(jstart);
		
		while (q.size() > 1)
		{
			if (q.front() == -1)
			{
				distance++;
				q.pop(), q.push(-1);

				continue;
			}

			if (q.front() == hole)
			{
				q = {};
				cout << "IGEN" << endl;
				break;
			}

			for (i = 0; i < jg[q.front()].size(); i++)
			{
				if (!been.count(jg[q.front()][i]) && distance < tdist[jg[q.front()][i]])
				{
					been.insert(jg[q.front()][i]);
					q.push(jg[q.front()][i]);
				}
			}

			q.pop();
		}

		if (q.size() > 0)
		{
			q = {};
			cout << "NEM" << endl;
		}
	}
	
}
//9 10 6 3 1
//1 2 1
//1 3 1
//2 4 1
//3 4 2
//4 7 1
//3 5 2
//5 6 2
//6 8 1
//7 9 1
//8 9 1
//7
//8
//9
Részfeladat Összpont Teszt Verdikt Idő Memória
base 64/80
1 Elfogadva 0/0 3ms 1876 KiB
2 Elfogadva 0/0 7ms 2504 KiB
3 Elfogadva 4/4 3ms 2152 KiB
4 Elfogadva 4/4 3ms 2292 KiB
5 Elfogadva 4/4 3ms 2508 KiB
6 Elfogadva 4/4 3ms 2720 KiB
7 Elfogadva 4/4 4ms 3000 KiB
8 Elfogadva 4/4 7ms 3256 KiB
9 Elfogadva 4/4 7ms 3472 KiB
10 Elfogadva 4/4 8ms 4036 KiB
11 Elfogadva 4/4 20ms 4588 KiB
12 Elfogadva 4/4 35ms 6044 KiB
13 Elfogadva 4/4 61ms 7692 KiB
14 Elfogadva 4/4 104ms 10292 KiB
15 Elfogadva 4/4 126ms 10420 KiB
16 Elfogadva 4/4 217ms 19732 KiB
17 Elfogadva 4/4 372ms 18464 KiB
18 Elfogadva 4/4 143ms 13968 KiB
19 Időlimit túllépés 0/4 555ms 10820 KiB
20 Időlimit túllépés 0/4 566ms 10628 KiB
21 Időlimit túllépés 0/4 542ms 8324 KiB
22 Időlimit túllépés 0/4 578ms 9760 KiB