22602023-01-06 14:02:45kohumarkTom és Jerry2 (60)cpp11Futási hiba 9/60538ms63340 KiB
#include <bits/stdc++.h>
using namespace std;

void fjerry(int x, int d, bool visited[], set<int> hist, int pii, vector<vector<int>>& jerry, int n, set<int>& ctom)
{
    visited[x] = true;
    hist.insert(x);
    pii++;
    if (x == d) {
        for (int i = 0; i < n; i++){
			if(!hist.count(i)) ctom.erase(i);
	    }
	}
    else {
        for(int i = 0; i < (int)jerry[x].size(); i++)
            if (!visited[jerry[x][i]])
                fjerry(jerry[x][i], d, visited, hist, pii, jerry,n,ctom);
    }
    pii--;
    visited[x] = false;
	hist.erase(x);
}

void route(int x, int d, bool visited[], int pii, vector<vector<int>>& map, int& l)
{
    visited[x] = true;
    pii++;
    if (x == d && pii < l) l=pii; 
    else {
        for(int i = 0; i < (int)map[x].size(); i++)
            if (!visited[map[x][i]])
                route(map[x][i], d, visited, pii, map, l);
    }
    pii--;
    visited[x] = false;
}

int main(){
	cin.tie(NULL); ios::sync_with_stdio(NULL);
	int n, m, t, db, e;
	cin >> n >> m >> t >> db >> e; e--; t--;
	vector<vector<int>> tom; vector<vector<int>> jerry;
	tom.assign(n, vector<int>());
	jerry.assign(n, vector<int>());
	for(int i=0; i<m; i++){
		int a, b, c;
		cin >> a >> b >> c;
		a--; b--;
		jerry[a].push_back(b);
		jerry[b].push_back(a);
		if(c==2&&b!=e&&a!=e){tom[a].push_back(b);tom[b].push_back(a);}
	}
	
	for(int i=0; i<db; i++){
		int x; cin >> x; x--;
		int pii=0;
		
		bool* visited = new bool[n];
		set<int> ctom;
		set<int> hist;
		for (int i = 0; i < n; i++){visited[i] = false; ctom.insert(i);}
		fjerry(x,e,visited,hist,pii,jerry,n,ctom);
		
		bool can=false;
		int lena=100000000; int lenb=100000000;
		for(auto it=ctom.begin(); it!=ctom.end(); it++){
			int d = *it + 1;
			pii=0;
			for(int i = 0; i < n; i++){visited[i] = false;}
			route(x,*it,visited,pii,jerry,lena);
			pii=0;
			for(int i = 0; i < n; i++){visited[i] = false;}
			route(t,*it,visited,pii,tom,lenb);
			if(lenb<=lena){cout << d << '\n'; can=true; break;}
		}
		
		if(!can) cout << '0' << '\n';
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base9/60
1Elfogadva0/03ms2012 KiB
2Futási hiba0/0158ms62224 KiB
3Elfogadva2/22ms2356 KiB
4Elfogadva2/22ms2556 KiB
5Elfogadva2/218ms2708 KiB
6Elfogadva3/3377ms2792 KiB
7Időlimit túllépés0/2465ms2240 KiB
8Időlimit túllépés0/2449ms2896 KiB
9Időlimit túllépés0/2500ms3184 KiB
10Időlimit túllépés0/3481ms3856 KiB
11Időlimit túllépés0/3460ms5324 KiB
12Időlimit túllépés0/3538ms12640 KiB
13Futási hiba0/359ms63216 KiB
14Futási hiba0/363ms63340 KiB
15Futási hiba0/354ms62948 KiB
16Futási hiba0/357ms62724 KiB
17Futási hiba0/350ms62540 KiB
18Futási hiba0/356ms62484 KiB
19Futási hiba0/471ms62304 KiB
20Futási hiba0/486ms62292 KiB
21Futási hiba0/565ms62288 KiB
22Futási hiba0/561ms62268 KiB