2022.1.11 16:20 我在测评看到了三页WA

Star 2022-01-11 16:21:08

#include <bits/stdc++.h>
using namespace std;
int m, n;
struct edge{
    int dis;
    int from, to;
}edges[4000010];
int ufs[1000010];
int tto(int x, int y){
    return n * (x - 1) + y;
}
int fd(int x){
    if(x != ufs[x])
        ufs[x] = fd(ufs[x]);
    return ufs[x];
}
void un(int fa, int son){
    fa = fd(fa);
    son = fd(son);
    ufs[son] = fa;
}
int set_edge(){
    int len = 0;
    for(int i = 1; i < m; ++i){
        for(int j = 1; j <= n; ++j){
            int p1 = tto(i, j), p2 = tto(i + 1, j);
            edges[++len].dis = 1;
            edges[len].from = p1;
            edges[len].to = p2;
            edges[++len].dis = 1;
            edges[len].to = p1;
            edges[len].from = p2;
        }
    }
    for(int i = 1; i <= m; ++i){
        for(int j = 1; j < n; ++j){
            int p1 = tto(i, j), p2 = tto(i, j + 1);
            edges[++len].dis = 2;
            edges[len].from = p1;
            edges[len].to = p2;
            edges[++len].dis = 2;
            edges[len].to = p1;
            edges[len].from = p2;
        }
    }
    return len;
}
void show(int len){
    for(int i = 1; i <= len; ++i){
        //cout << edges[i].from << ' ' << edges[i].to << ' ' << edges[i].dis << endl;
        printf("%d %d %d\n", edges[i].from, edges[i].to, edges[i].dis);
    }
}
int main(){
    //freopen("grid7.in", "r", stdin);
    //freopen("out.txt", "w", stdout);
    scanf("%d%d", &m, &n);
    int x1, y1, x2, y2;
    int len, ans = 0;
    for(int i = 1; i <= m * n + 1; ++i)
        ufs[i] = i;
    while(scanf("%d%d%d%d", &x1, &y1, &x2, &y2) == 4){
        int p1 = tto(x1, y1), p2 = tto(x2, y2);
        //cout << p1 << ' ' << p2 << endl << endl;
        un(p1, p2);
    }
    len = set_edge();
    //show(len);
    for(int i = 1; i <= len; ++i){
        if(fd(edges[i].from) == fd(edges[i].to))
            continue;
        else{
            ans += edges[i].dis;
            un(edges[i].from, edges[i].to);
        }
    }
    printf("%d", ans);
    return 0;
}

共 2 条回复

Star

cpp后面有换行符 代码后面有换行符

Star

代码框(c++) ```cpp (写代码) ``` 效果

#include <stdio.h>
int main(){
    printf("Hello, World!\n");
    return 0;
}