一个容易忽视的点——越界
查看原帖
一个容易忽视的点——越界
615240
ser3n7ty楼主2025/1/8 19:26
#include <cstdio>
#include <vector>

using namespace std;

int main()
{
    vector<int> v(1e6+1,0);
    int q, op, x, y;
    scanf("%d", &q);
    while(q--)
    {
        scanf("%d %d", &op, &x);
        if(op == 1)
        {
            scanf("%d", &y);
            v[y] = v[x];
            v[x] = y;
        }
        else if(op == 2)
        {
            printf("%d\n", v[x]);
        }
        else if(op == 3)
        {
            v[x] = v[v[x]];
            v[v[x]] = 0;
        }
    }
    return 0;
}
应该可以确定这个题解的思路没有问题,但是实际提交的时候只能通过前三个测试点。
反复测试之后发现只需要将数组的空间再开大一些,比如 1e6+10 或者对删除操作进行一个溢出的判断就能通过全部测试点
2025/1/8 19:26
加载中...