WA Tarjan 求调,悬赏关注!!!
查看原帖
WA Tarjan 求调,悬赏关注!!!
797354
Ferdina_zcjb楼主2023/7/28 09:18

Subtask #1 第三个点 WA

#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
#define int long long
#define MAXN 500001
#define MAXM 2*500001
#define INF 0x7fffffff
struct node{int val,pos;};
vector<int> g[MAXN];
vector<node> G[MAXN];
int n,m,s,ans[MAXM],vis[MAXM],fa[MAXM];
int find(int x){
  if(x == fa[x])return x;
  else return fa[x] = find(fa[x]);
}
void tarjan(int u){
  vis[u] = 1;
  int len = g[u].size();
  for(int i = 0;i < len;++i){
    int v = g[u][i];
    if(!vis[v]){
      tarjan(v);
      fa[v] = u;
    }
  }
  int lenn = G[u].size();
  for(int i = 0;i < lenn;++i){
    int v = G[u][i].val,p = G[u][i].pos;
    if(vis[v] == 2){
      ans[p] = find(v);
    }
  }
  vis[u] = 2;
  return ;
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> s;
  for(int i = 1;i < n;++i){
    int x,y;
    cin >> x >> y;
    g[x].push_back(y);
    g[y].push_back(x);
    fa[i] = i;
  }
  fa[n] = n;
  for(int i = 1;i <= m;++i){
    int q1,q2;
    cin >> q1 >> q2;
    G[q1].push_back({q2,i});
    G[q2].push_back({q1,i});
  }
  tarjan(s);
  for(int i = 1;i <= m;++i){
    cout << ans[i] << endl;
  }
  return 0;
}
2023/7/28 09:18
加载中...