90pts求调(悬关)
查看原帖
90pts求调(悬关)
997660
garychu楼主2024/12/9 16:33

#3WA

On line 1 column 1,read 3,expected 2.

#include<bits/stdc++.h>
using namespace std;
const int N=505;
int n,m;
string s;
struct edge{
	int v,l,w;
	bool operator <(const edge &a)const{
		return a.w<w;
	}
};
vector<edge> mp[N];
priority_queue<edge> q;
int vis[N],dis[N];
void dij(){
	memset(dis,0x3f,sizeof(dis));
	q.push({1,-1,0});
	dis[1]=0;
	while(!q.empty()){
		edge h=q.top();
		q.pop();
		int u=h.v;
		if(vis[u])	continue;
		vis[u]=1;
		int len=mp[u].size();
		for(int i=0;i<len;i++){
			int v=mp[u][i].v,l=mp[u][i].l,w=h.w;
			if(h.l!=-1&&l!=h.l)	w++;
			if(w<dis[v]){
				q.push({v,l,w});
				dis[v]=w;
			}
		}
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>m>>n;
	for(int i=1;i<=m;i++){
		cin>>ws;
		getline(cin,s);
		int len=s.size(),u=-1,v=-1;
		for(int j=0;j<len;j++){
			if(s[j]>='0'&&s[j]<='9'){
				if(v==-1)	v=s[j]-'0';
				else	v=v*10+(s[j]-'0');
			}
			else if(s[j]==' '){
				if(u!=-1)
					mp[u].push_back({v,i,0});
				u=v,v=-1;
			}
		}
		if(u!=-1)
			mp[u].push_back({v,i,0});
	}
	dij();
	if(dis[n]==0x3f3f3f3f)
		cout<<"NO";
	else
		cout<<dis[n];
	return 0;
}

求助!!!

2024/12/9 16:33
加载中...