碰到一行中不确定应该读入多少个数据的情况
1. 利用sstream库的getline读取整行,用一个字符串记录
2. 然后利用stringstream将这个字符串的空格给过滤就得到了当前行读入的数据
例题
#include<iostream>
#include<cstring>
#include<algorithm>
#include<sstream>
using namespace std;
const int N = 510;
bool g[N][N]; //因为权值只有0和1,所以直接用bool
int stop[N]; //表示当前路线的所有停车点
int dist[N];
bool st[N];
int que[N];
int n,m;
int bfs(){
memset(dist,0x3f,sizeof dist);
int hh = 0,tt = -1;
que[++tt] = 1;
dist[1] = 0;
while(hh <= tt){
int t = que[hh++];
if(t == n){
//cout << "答案是" << dist[t] << endl;
return dist[t];
}
for(int i = 1;i <= n;++i){
if(g[t][i] && dist[i] > dist[t] + 1){
que[++tt] = i;
dist[i] = dist[t] + 1;
}
}
}
return -1;
}
int main(){
cin >> m >> n;
string line;
getline(cin,line); //把最后的回车读掉
while(m--){
string line;
getline(cin,line); //把整行数据读进来
stringstream ssin(line); //利用stringstream将数据中的空格过滤掉
int cnt = 0,p;
while(ssin >> p) stop[cnt++] = p;
//将所有的停车点相互组合,来进行建图
for(int i = 0;i < cnt;++i){
for(int j = i + 1;j < cnt;++j){
g[stop[i]][stop[j]] = true;
}
}
}
if(bfs() == -1) cout << "NO" << endl;
else cout << max(bfs() - 1,0) << endl;
return 0;
}
请问您这是哪道题目的解答呀,想去看看题字
加上了,是920题
感谢~