本地AC洛谷30pts
查看原帖
本地AC洛谷30pts
958865
aldzsfs楼主2023/6/22 09:32
#include<bits/stdc++.h>
using namespace std;
int m,n,x,num,head[600],k[600];
string s;
struct edge{int to,next;}g[30000000];
queue<int>q;
void add(int u,int v){g[++num]=(edge){v,head[u]};head[u]=num;}
int main(){
	cin>>m>>n;
	getline(cin,s);
	for(int t=1;t<=m;t++){
		vector<int>p;
		getline(cin,s);
		for(int i=0;i<s.size();i++)
			if(s[i]==' ')	p.push_back(x),x=0;
			else x=x*10+s[i]-'0';
		p.push_back(x);
		x=0;
		for(int i=0;i<p.size()-1;i++)
			for(int j=i+1;j<p.size();j++)
				add(p[i],p[j]);
	}
	q.push(1);
	k[1]=1;
	while(!q.empty()){
		int a=q.front();
		q.pop();
		for(int i=head[a];i;i=g[i].next)
			if(!k[g[i].to])	k[g[i].to]=k[a]+1,q.push(g[i].to);
	}
	if(k[n])	cout<<k[n]-2;
	else puts("NO");
	return 0;
}

洛谷测评姬不让过啊o(╯□╰)o

2023/6/22 09:32
加载中...