WA 1&5 求调
查看原帖
WA 1&5 求调
1119043
lyl20100320楼主2024/11/2 00:25
#include<iostream>
#include<queue>
#include<vector>
#define inf 0x7fffffff
using namespace std;
int n,k;//n为边数 k为点数 
int a,b,vis[1005],dis[1005];
vector<int> v[1005];
priority_queue<int> q;
//大根堆 小数在上 指下一个点 
void dijkstra(){
	for(int i=1;i<=k;i++){
		dis[i]=inf;
	}
	dis[1]=1;//出发点花费为1 
	q.push(1);//从一号点开始找 
	while(!q.empty()){
		int x=q.top(); 
		q.pop();
		if(vis[x])continue;
		vis[x]=1;
		for(int i=0;i<v[x].size();i++){
			if(!vis[v[x][i]] && dis[v[x][i]]>dis[x]+1){
				dis[v[x][i]]=dis[x]+1;
				q.push(v[x][i]);
			}
		}
	}
}
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a>>b;
		v[a].push_back(b);
	}
	dijkstra();
	for(int i=1;i<=k;i++){
		cout<<dis[i]<<" ";
	} 
	if(dis[k]==inf){
		cout<<-1;
	}
	else{
		cout<<dis[k];
	}
	return 0;
}
2024/11/2 00:25
加载中...