题目数据输入中间读入字符
Posted ╰追憶似水年華ぃ╮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目数据输入中间读入字符相关的知识,希望对你有一定的参考价值。
http://acm.hnust.edu.cn/JudgeOnline/problem.php?cid=1310&pid=1
科大oj上这道题在输入中间读入字符,开始用字符都怎么都不对,看了老师的程序发现用的是字符串。。。
顺便附下代码:
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstring>
#define inf 1e-4
using namespace std;
const int maxn = 1005;
int f[maxn];
int x[maxn], y[maxn], op[maxn];
int n, d;
int find(int x)
{
return f[x] == x ? x : f[x] = find(f[x]);
}
void Union(int x, int y)
{
int rx = find(x);
int ry = find(y);
if (rx != ry)
f[rx] = ry;
}
int main()
{
while (scanf("%d%d", &n, &d) == 2)
{
memset(op, 0, sizeof(op));
for (int i = 1; i <= n; i++) {
f[i] = i;
scanf("%d%d", &x[i], &y[i]);
}
char c[5];
int p, q;
while (scanf("%s",&c)==1)//字符串!!!
{
if (strcmp(c,"O")==0) {//字符串!!!
scanf("%d", &p);
op[p] = 1;
for (int i = 1; i <= n; i++) {
if (op[i]) {
double dd = sqrt((double)(x[i] - x[p])*(double)(x[i] - x[p]) + (double)(y[i] - y[p])*(double)(y[i] - y[p]));
if (dd<=d)//直接这样比较,之前用精度比较好像总是WA
Union(i, p);
}
}
}
else
{
scanf("%d%d", &p, &q);
if (find(p) == find(q))
printf("SUCCESS\n");
else
printf("FAIL\n");
}
}
}
return 0;
}
以上是关于题目数据输入中间读入字符的主要内容,如果未能解决你的问题,请参考以下文章