Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <iomanip>
- #include <tuple>
- #include <math.h>
- #include <set>
- #include <stack>
- #include <map>
- #include <queue>
- #include <random>
- #define DEBUG
- #define pqueue priority_queue
- #define pb(x) push_back(x)
- //#define endl "\n"
- #define all(x) x.begin(), x.end()
- #define int long long
- //#define x first;
- //#define y second;
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- typedef vector<int> vi;
- typedef vector<vector<int>> vvi;
- typedef vector<ull> vull;
- typedef vector<ll> vll;
- typedef tuple<int, int, int> tiii;
- typedef pair<int, int> pii;
- typedef vector<pair<int, int>> vpii;
- typedef vector<bool> vb;
- typedef vector<string> vs;
- typedef vector< vector<int>> vvi;
- typedef vector<char> vc;
- const int INF = 1e9;
- const ll INFLL = 1e12;
- const int MOD = 1000000007;
- const ld eps = 1e-7;
- const int MOD2 = (1<<30)+1;
- void fast_io(){
- ios_base::sync_with_stdio(0);
- cin.tie(NULL);
- cout.tie(NULL);
- #ifdef DEBUG
- #else
- freopen("lcs.in", "r", stdin);
- freopen("lcs.out", "w", stdout);
- #endif
- }
- int dp[500][500][64];
- signed main() {
- fast_io();
- int n, m;
- cin >> n >> m;
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- cin >> dp[j][i][0];
- dp[j][i][0]--;
- }
- }
- for(int k=1; k<=63; k++){
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- dp[i][j][k] = dp[dp[i][j][k-1]][i][k-1];
- }
- }
- }
- for(int i=0; i<m; i++){
- int x, y, k;
- cin >> x >> y >> k;
- x--; y--;
- // k--;
- for(int j=63; j>=0; j--){
- if(pow(2, j)<=k){
- int beta = x;
- x = dp[x][y][j];
- y = beta;
- k -= pow(2, j);
- }
- }
- cout << x+1 << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement