• 板块灌水区
  • 楼主封禁用户
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/30 21:55
  • 上次更新2024/10/31 11:36:51
查看原帖
1116615
封禁用户楼主2024/10/30 21:55

这是哪道题的题解?过来认领一下。

#include<bits/stdc++.h>
using namespace std;
int h[101],nxt[501],val[501],zd[501],cnt=0;
int n,m,s,dis[101];
bool inq[101];
int q[1001],f,e;
void addedge(int a,int b,int c){
	cnt++;
	val[cnt]=c,zd[cnt]=b,nxt[cnt]=0;
	nxt[cnt]=h[a];
	h[a]=cnt;
}
int main(){
	s=1;
	cin>>n>>m;
	addedge(1,2,n);
	addedge(2,3,m);
	memset(dis,-1,sizeof(dis));
	dis[s]=0,inq[s]=1;
	q[1]=s,f=1,e=1;
	while(f<=e){
		int u=q[f++];
		for(int p=h[u];p;p=nxt[p]){
			int v=zd[p],c=val[p];
			if(dis[v]==-1||dis[v]>dis[u]+c){
				dis[v]=dis[u]+c;
				if(inq[v]==0)q[++e]=v,inq[v]=1;
			}
		}
		inq[u]=0;
	}
	cout<<dis[3];
}
2024/10/30 21:55
加载中...