Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <bits/stdc++.h>
- using namespace std;
- const int maxn=3*1e5;
- const int maxt=2*1e5+10;
- vector<int> adj[maxn];
- vector<int> v[maxt];
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- int n,r;
- cin>>n>>r;
- for(int i=0;i<r;i++)
- {
- int x,y;
- cin>>x>>y;
- adj[x].push_back(y);
- adj[y].push_back(x);
- }
- int t;
- cin>>t;
- for(int i=0;i<t;i++)
- {
- int x,y,z;
- cin>>x>>y>>z;
- v[i].push_back(x);
- v[i].push_back(y);
- v[i].push_back(z);
- }
- vector<vector<bool>> visited(n,vector<bool>(n,false));
- queue<vector<int>> q;
- q.push({-1,0,0});
- while(!q.empty())
- {
- vector<int> cur=q.front();
- q.pop();
- int prevprev=cur[0],prev=cur[1],dist=cur[2];
- if(prev==n-1)
- {
- cout<<dist;
- return 0;
- }
- for(int next:adj[prev])
- {
- bool zabraneto=false;
- for(int i=0;i<t;i++)
- {
- if(v[i][0]==prevprev&&v[i][1]==prev&&v[i][2]==next)
- {
- zabraneto=true;
- break;
- }
- }
- if(zabraneto)
- continue;
- if(prevprev!=-1&&visited[prev][next])
- continue;
- if(prevprev!=-1)
- visited[prev][next]=true;
- q.push({prev,next,dist+1});
- }
- }
- cout<<"GRESHKA";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment