// // main.cpp // Graph Wars // // Created by Alex Rancea on 11/02/15. // Copyright (c) 2015 Alex Rancea. All rights reserved. // #include #include using namespace std; struct adaugat{ int x; int y; }intr[400000]; int main() { int n,m,i,valIntr,x,y,z=1,j; vector> az; cin>>n>>m; az.resize(n); for (int i = 0; i < n; ++i) az[i].resize(n); for(i=1;i<=m;i++){ cin>>valIntr; switch (valIntr) { case 1: cin>>x>>y; az[x][y]=az[y][x] = 1; intr[z].x = x; intr[z].y = y; z++; break; case 2: cin>>x; intr[x].x = 0; intr[x].y = 0; break; case 3: cin>>x>>y; if(az[x][y]==0&&az[y][x]==0){ cout<<"YES"; } else{ cout<<"NO"; } default: break; } } return 0; }