为什么测试数据过了还wa呢

P1522 [USACO2.4] 牛的旅行 Cow Tours

明明输出一模一样,可是这个测试点给我判wa了 ![](https://cdn.luogu.com.cn/upload/image_hosting/556pvsm8.png)
by 2889111607qqcom @ 2023-01-21 11:36:43


@[2889111607qqcom](/user/789473) 能不能把你的代码贴一下
by _xyz_ @ 2023-01-21 11:48:48


因为题目的输入是在windows环境下得到,换行为\r\n 而在linux终端运行的评测机运行上述代码则只会屏蔽\n,而不会屏蔽\r 此时将字符输出后会突兀的出现M
by _xyz_ @ 2023-01-21 11:51:17


@[4501897xy](/user/529458) 代码如下谢谢 ```cpp #include<bits/stdc++.h> using namespace std; #define N 160 #define INF 99999999 typedef pair<int, int>pii; pii ver[N]; double g[N][N]; double m[N]; int n; double get(int a, int b) { double x = ver[a].first, y = ver[a].second, x1 = ver[b].first, y1 = ver[b].second; double ans = sqrt(pow((x1 - x), 2) + pow((y1 - y), 2)); return ans; } void floyd() { for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) g[i][j] = min(g[i][j], g[i][k] + g[k][j]); } void find() { for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) { if (g[i][j] != INF && i != j && m[i] < g[i][j]) m[i] = g[i][j]; } } int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d%d", &ver[i].first, &ver[i].second); getchar(); char ch; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { scanf("%c", &ch); if (ch == '0') { g[i][j] = INF; if (i == j)g[i][j] = 0; } else g[i][j] = get(i, j); } getchar(); } floyd(); find(); double ans = INF; for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) { if (g[i][j] == INF && ans > get(i, j) + m[i] + m[j]) ans = get(i, j) + m[i] + m[j]; } for (int i = 1; i <= n; i++)ans = max(ans, m[i]); printf("%.6f\n", ans); return 0; } ```
by 2889111607qqcom @ 2023-01-21 11:56:39


把\n换成\r提交后也是wa
by 2889111607qqcom @ 2023-01-21 11:59:43


@[2889111607qqcom](/user/789473) ```cpp #include<bits/stdc++.h> using namespace std; #define N 160 #define INF 99999999 typedef pair<int, int>pii; pii ver[N]; double g[N][N]; double m[N]; int n; double get(int a, int b) { double x = ver[a].first, y = ver[a].second, x1 = ver[b].first, y1 = ver[b].second; double ans = sqrt(pow((x1 - x), 2) + pow((y1 - y), 2)); return ans; } void floyd() { for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) g[i][j] = min(g[i][j], g[i][k] + g[k][j]); } void find() { for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) { if (g[i][j] != INF && i != j && m[i] < g[i][j]) m[i] = g[i][j]; } } int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d%d", &ver[i].first, &ver[i].second); getchar(); char ch; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cin>>ch; if (ch == '0') { g[i][j] = INF; if (i == j)g[i][j] = 0; } else g[i][j] = get(i, j); }getchar(); } floyd(); find(); double ans = INF; for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) { if (g[i][j] == INF && ans > get(i, j) + m[i] + m[j]) ans = get(i, j) + m[i] + m[j]; } for (int i = 1; i <= n; i++)ans = max(ans, m[i]); printf("%.6lf", ans); return 0; } ```
by _xyz_ @ 2023-01-21 12:08:11


@[2889111607qqcom](/user/789473) 但是最后一个wa
by _xyz_ @ 2023-01-21 12:08:37


@[4501897xy](/user/529458) 可以了谢谢你,我试着只把原来的代码scanf("%c", &ch);改成cin>>ch;也可以了。但是不知道为什么这么改就可以过,请问可以指教一下吗
by 2889111607qqcom @ 2023-01-21 12:21:36


@[2889111607qqcom](/user/789473) 我也不清楚,只是老师这么做
by _xyz_ @ 2023-01-21 12:57:46


@[4501897xy](/user/529458) 好的谢谢你
by 2889111607qqcom @ 2023-01-21 13:02:29


| 下一页