SPJ程序问题
  • 板块学术版
  • 楼主guixin
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/3/16 16:02
  • 上次更新2023/10/23 21:24:59
查看原帖
SPJ程序问题
41386
guixin楼主2023/3/16 16:02

SPJ程序中还要写什么语句才能让洛谷评测正确反馈评测结果?

现在这个评测结果如图,可以看到数据点能够评测出正确或者错误,但显示UKE

SPJ代码如下:

#include "testlib.h"
#include <bits/stdc++.h>
using namespace std;

#define WA quitf(_wa, "The answer is wrong: expected = %f, found = %f", 1, 1);
#define AC quitf(_ok, "The answer is correct. answer is %d", 1)

set < pair < int, int > > s;

int d[300010];

vector < int > son[300010];
FILE* fin;
FILE* fout;
FILE* fstd;
FILE* fscore;
FILE* freport;
int vis[300010];
void dfs(int cur) {
    vis[cur] = 1;
    for (auto i : son[cur]) {
        if (vis[i] == 0) dfs(i);
        else if (vis[i] == 1) WA;
    }
    vis[cur] = 2;
}
int main(int argc, char* argv[]) {
    fin = fopen(argv[1], "r");
    fout = fopen(argv[2], "r");
    fstd = fopen(argv[3], "r");
    fscore = fopen(argv[5], "w");
    freport = fopen(argv[6], "w");
    int n, m, m2;
    fscanf(fin, "%d%d", &n, &m);
    if (fscanf(fout, "%d", &m2) != 1) WA;
    if (m2 < 0) WA;
    for (int i = 1; i <= m; i++) {
        int u, v;
        fscanf(fin, "%d%d", &u, &v);
        d[u]++, d[v]--;
        s.insert({u, v});
    }
    for (int i = 1; i <= m2; i++) {
        int u, v;
        if (fscanf(fout, "%d%d", &u, &v) != 2) WA;
        if (u < 1 || u > n) WA;
        if (v < 1 || v > n) WA;
        d[u]--, d[v]++;
        son[u].push_back(v);
        if (s.count({u, v})) s.erase({u, v});
        else WA;
    }
    for (int i = 1; i <= n; i++) if (vis[i] == 0) dfs(i);
    for (int i = 1; i <= n; i++) if (d[i] != 0) WA;
    AC;
    return 0; 
}
2023/3/16 16:02
加载中...