#include<bits/stdc++.h>usingnamespace std;intmain(){int s, t, x;
cin >> s >> t >> x;if(s < t){
cout <<(s <= x && x < t ?"Yes":"No")<<'\n';}else{
cout <<(x < t || s <= x ?"Yes":"No")<<'\n';}}
B - Takahashi’s Secret
思路分析:
这题我想的是dfs跑一遍,如果之前跑过这个点那么就退出即可,dfs一次就加一次。
代码如下:
#include<bits/stdc++.h>usingnamespace std;constint maxn =1e5+10;
vector<int> e[maxn];bool vis[maxn];int ans;voiddfs(int u){
vis[u]=1;
ans++;for(auto x : e[u]){if(vis[x]){break;}else{dfs(x);}}}signedmain(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);int n, x;
cin >> n >> x;for(int i =1; i <= n; i++){int v;
cin >> v;
e[i].push_back(v);}dfs(x);
cout << ans << endl;return0;}