社区讨论
关于把getline换成cin就AC了的玄学问题
P2814家谱参与者 6已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo8t9anb
- 此快照首次捕获于
- 2023/10/28 00:11 2 年前
- 此快照最后确认于
- 2023/10/28 00:11 2 年前
以下两份代码除了输入不同没有其他差别,但一个AC,一个WA。
AC的:
CPP#include <iostream>
#include <string>
#include <map>
using namespace std;
map <string, string> f;
string find(string name)
{
return (f[name] == name) ? name : f[name] = find(f[name]);
}
int main()
{
char c;
string name, s;
while (c = getchar())
{
if (c == '$')
{
break;
}
else if (c == '#')
{
cin >> name;
if (find(name) == "")
{
f[name] = name;
}
else
{
f[name] = find(name);
}
}
else if (c == '+')
{
cin >> s;
f[s] = f[name];
}
else if (c == '?')
{
cin >> s;
cout << s << " " << find(f[s]) << "\n";
}
}
return 0;
}
WA的:
CPP#include <iostream>
#include <string>
#include <map>
using namespace std;
map <string, string> f;
string find(string name)
{
return (f[name] == name) ? name : f[name] = find(f[name]);
}
int main()
{
char c;
string name, s;
while (c = getchar())
{
if (c == '$')
{
break;
}
else if (c == '#')
{
getline(cin, name);
if (find(name) == "")
{
f[name] = name;
}
else
{
f[name] = find(name);
}
}
else if (c == '+')
{
getline(cin, s);
f[s] = f[name];
}
else if (c == '?')
{
getline(cin, s);
cout << s << " " << find(f[s]) << "\n";
}
}
return 0;
}
提交记录:
https://www.luogu.com.cn/record/76729155
https://www.luogu.com.cn/record/76730251
回复
共 5 条回复,欢迎继续交流。
正在加载回复...