头文件 #include <sstream>
string line;
getline(cin,line); // 先读入整一行字符串
stringstream ssin(line); // 用字符串初始化流输入
while(ssin >> stop[cnt]) cnt ++; // 流输入
由于边的权重为1,可以直接bfs
读入一行不知道多少个数的时候可以用stringstream
#include <iostream>
#include <cstring>
#include <sstream>
#include <queue>
using namespace std;
const int N =510;
int m,n;
bool g[N][N]; // 用邻接矩阵来存
int dist[N];
int stop[N];
void bfs()
{
memset(dist,0x3f,sizeof dist);
dist[1]=0;
queue<int> q;
q.push(1);
while(q.size())
{
int t=q.front();
q.pop();
for(int i=1;i<=n;i++)
if(g[t][i] && dist[i] > dist[t] +1)
{
dist[i]=dist[t] + 1;
q.push(i);
}
}
}
int main()
{
cin>>m>>n;
string line;
getline(cin,line); // 读入回车
while(m--)
{
getline(cin,line); // 读入一行不知道多少个数的时候可以用stringstream
stringstream ssin(line); // 用string line 初始化 stringstream ssin
int cnt=0,p;
while(ssin>>p) stop[cnt ++ ]=p;
for(int j=0;j<cnt;j++)
for(int k=j+1;k<cnt;k++)
g[stop[j]][stop[k]]=true;
}
bfs();
if(dist[n] == 0x3f3f3f3f) puts("NO");
else cout<< max(dist[n]-1,0)<<endl;
return 0;
}
```
最优乘车?
是的
这是哪道题
cin>>m>>n;
因为上面先读入
m n \n
,\n
是换行符。\n
没有显示,但默认换行的时候会加\n