#include <bits/stdc++.h> using namespace std; const int mxn=3e1+5; unordered_map<string,int>mp; int n,m; char s[1000],t[1000]; double x,dis[mxn][mxn]; void floyd() { for(int k=0;k<n;k++) for(int i=0;i<n;i++) { if(dis[i][k]==0) continue; for(int j=0;j<n;j++) dis[i][j]=max(dis[i][j],dis[i][k]*dis[j][k]); } } int main() { int cnt=0; while(scanf("%d",&n)==1) { if(n==0) break; for(int i=0;i<mxn;i++) for(int j=0;j<mxn;j++) dis[i][j]=i==j; mp.clear(); for(int i=1;i<=n;i++) { scanf("%s",s); mp[s]=mp.size(); } scanf("%d",&m); for(int i=i;i<=m;i++) { scanf("%s%lf%s",s,&x,t); if(mp.count(s)==0||mp.count(t)==0) continue; dis[mp[s]][mp[t]]=x; } floyd(); int sum=0; for(int i=0;i<n;i++) sum|=dis[i][i]>1; printf("Case %d: %s\n", ++cnt, sum?"Yes":"No"); } return 0; }这个代码为什么n只读取一次
时间: 2024-04-14 11:31:13 浏览: 23
这段代码中的`while(scanf("%d",&n)==1)`是一个循环条件,只有当读取到一个整数并且成功赋值给变量n时,循环才会执行。在这里,`scanf("%d",&n)`语句只会读取一次n的值,并且在每次循环开始时检查是否成功赋值。如果输入的值不是整数或者无法成功赋值给n,循环将终止。这样做是为了确保输入的n值正确,并且在输入结束时能够正确地退出循环。
相关问题
#include <bits/stdc++.h> using namespace std;
这个头文件是C++11标准引入的,它包含了所有标准库中的头文件。使用这个头文件可以方便地在一个地方包含所有需要的头文件,而不需要一个一个地包含。这个头文件通常只在竞赛中使用,因为它不是标准C++头文件,不保证在所有编译器中都能正常工作。
以下是一个使用这个头文件的示例,实现输入4个整数a、b、c、d,将它们倒序输出:
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << d << ' ' << c << ' ' << b << ' ' << a << endl;
return 0;
}
```
#include <bits/stdc++.h> using namespace std
这段代码是一个C++的头文件引用和命名空间的使用示例。具体来说,`#include <bits/stdc++.h>`是一个常用的头文件引用方式,它包含了C++标准库中的所有头文件。而`using namespace std`则是为了使用`std`命名空间中的标准库函数和对象,这样就可以直接使用`cout`、`cin`等标准输入输出流对象,而不需要写`std::cout`、`std::cin`。
这种写法虽然方便,但也存在一些问题。首先,包含了所有的标准库头文件可能会导致编译时间变长。其次,使用了`using namespace std`会将整个`std`命名空间中的所有标识符引入当前作用域,可能会导致命名冲突。因此,在实际开发中,建议根据需要只包含需要的头文件,并使用具体的命名空间来避免潜在的问题。