萌新求助,三值逻辑这题,本机 WA 提交 WA
查看原帖
萌新求助,三值逻辑这题,本机 WA 提交 WA
1023961
Ryzen_9_9950X3D楼主2024/10/1 22:07

如题:

#include <bits/stdc++.h>
using namespace std;
int uf[200005];
char xz[100005];
int visit[100005];
int found(int k,int depth = 1)
{
    if(uf[k] == k || visit[k])
    {
        return k;
    }
    visit[k] = depth;
    uf[k] = found(uf[k],depth + 1);
    visit[k] = 0;
    return uf[k];
}
void solve()
{
    int n,m;
    cin >> n >> m;
    for(int i = 1;i <= 200000;i++) uf[i] = i;
    for(int i = 1;i <= m;i++)
    {
        char k;
        cin >> k;
        if(isalpha(k))
        {
            int r;
            cin >> r;
            xz[found(r)] = k;
        }
        else
        {
            int r,t;
            cin >> r >> t;
            if(k == '+') xz[found(r)] = xz[t];
            else xz[found(r)] = xz[t + r];
        }
    }
    for(int i = 1;i <= n;i++) xz[i] = xz[found(i)];
    int ans = 0;
    for(int i = 1;i <= n;i++) ans += (xz[i] == 'U');
    cout << ans << endl;
}
int main()
{
    int n,m;
    cin >> n >> m;
    while(m--) solve();
    return 0;
}
2024/10/1 22:07
加载中...