求助啊(就一件很神奇的事)
查看原帖
求助啊(就一件很神奇的事)
579699
Self_Killer楼主2023/11/15 21:02

代码如下:

#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int n,m,f[510],c[510];string s;bool vst[510];
vector<int> to[510];
int main(){
	cin >> m >> n;
	getline(cin,s);
	for(int i = 1;i <= n;i++) f[i] = 1e9;
	for(int i = 1;i <= m;i++){
		getline(cin,s);
		int cnt = 0,sum = 0;
		for(int j = 0;j < s.size();j++){
			if(s[j] == ' '){
				c[++cnt] = sum;
				sum = 0;
			}
			else sum = sum * 10 + s[j] - '0';
		}
		c[++cnt] = sum;
		for(int j = 1;j < cnt;j++){
			for(int k = j + 1;k <= cnt;k++) to[c[j]].push_back(c[k]);
		}
	}
	f[1] = 0;
	q.push(1);
	while(!q.empty()){
		int u = q.front();
		q.pop();
		for(int i = 0,v;i < to[u].size();i++){
			if(f[v = to[u][i]] <= f[u] + 1) continue;
			f[v] = f[u] + 1;
			q.push(v);
		}
	}
	if(f[n] == 1e9) cout << "NO";
	else cout << f[n] - 1;
	return 0;
}

然后测试了一下数据,第一个数据错了

数据:

4
15
2 11
1 3 4 5 9
3 6 11
2 7 8 10 11 12 13 15

然后它显示我输出NO,本地却输出2,是什么问题,语言么

2023/11/15 21:02
加载中...