明明输出一模一样,可是这个测试点给我判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