rt,用getline输入有问题,下载的数据在本地都能跑过,别的oj也能AC,就落谷我只拿了30分。尝试过把末尾的非数字符号吞掉,但全RE。所以我要怎么输入数据啊?
#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<queue>
using namespace std;
int n,m;
string tmp;
vector<int> tmpto;
bool vis[1001];
vector<pair<int,int>> to[1001];
void bfs(){
queue<pair<int,pair<int,int>>> q;
q.push(make_pair(1,make_pair(-1,-1)));
vis[1]=1;
while(q.size()){
pair<int,pair<int,int>> fnt=q.front();
q.pop();
if(fnt.first==n){
cout << fnt.second.first;
return;
}
for(int i=0,siz=to[fnt.first].size();i<siz;i++){
if(vis[to[fnt.first][i].first]) continue;
int v=to[fnt.first][i].first;
// cout << '#' << fnt.first << " visited #" << v << ".\n";
q.push(make_pair(v,make_pair(fnt.second.first+(fnt.second.second==to[fnt.first][i].second?0:1),to[fnt.first][i].second)));
vis[v]=1;
}
}
cout << "NO";
}
int main(){
cin >> m >> n;
int id=0;
while(m--){
// cout << "m=" << m << ".\n";
tmp.clear();
while(tmp.empty()) getline(cin,tmp);
istringstream sin(tmp);
tmpto.clear();
int p,cnt=0;
while(sin >> p && sin){
tmpto.push_back(p);
cnt++;
}
for(int i=0;i<cnt;i++){
for(int j=i+1;j<cnt;j++){
to[tmpto[i]].push_back(make_pair(tmpto[j],id));
}
}
++id;
}
// for(int i=0;i<=n;i++){
// for(auto &sth:to[i]){
// cout << sth.first << ' ';
// }
// cout << '\n';
// }
bfs();
return 0;
}