#include #include #include #include using namespace std; /** Assumed constraints: N,M <= 500 K <= 500 000 (implied by previous constraint) There is always a solution **/ int grid[511][511]; int n,m; int k,p; bool isCorner[500111]; vector Graph[500111]; int Path[500111]; int L=0; bool used[500111]; int q[500111]; int qL=0; bool TFO[500111]; int comefrom[500111]; void BFS(int ver) { int i; int uk=1; int cver,nver; qL=1; q[qL]=ver; TFO[ver]=true; while(uk<=qL) { cver=q[uk]; if (cver!=ver && isCorner[cver]) { break; } for (i=0;i