最短路-SPFA 模板

无边权,无向边

#include
#include
#include
#include
#include
#include

#define inf 233333333

using namespace std;

int n,m;
vectorv[20020];
bool vis[20020];
int dis[20020];

void spfa(int s){
	for(int i=1; i<=n; i++)dis[i]=inf,vis[i]=0;
	queueq;
	q.push(s);
	dis[s]=0;
	vis[s]=true;
	while(!q.empty()){
		int t=q.front();
		q.pop();
		for(int i=0; idis[t]+1){
				dis[to]=dis[t]+1;
				if(!vis[to])q.push(to),vis[to]=true;
			}
		}
		vis[t]=false;
	}
}

int main(){
	scanf("%d%d",&n,&m);
	for(int i=0; i


有边权,无向边

#include
#include
#include
#include
#include
#include

#define inf 233333333

using namespace std;

struct node{
	int to,len;
	node(int x,int y){to=x,len=y;}
};

int n,m;
vectorv[20020];
bool vis[20020];
int dis[20020];

void spfa(int s){
	for(int i=1; i<=n; i++)dis[i]=inf,vis[i]=0;
	queueq;
	q.push(s);
	dis[s]=0;
	vis[s]=true;
	while(!q.empty()){
		int t=q.front();
		q.pop();
		for(int i=0; idis[t]+len){
				dis[to]=dis[t]+len;
				if(!vis[to])q.push(to),vis[to]=true;
			}
		}
		vis[t]=false;
	}
}

int main(){
	scanf("%d%d",&n,&m);
	for(int i=0; i


你可能感兴趣的:(模板,最短路)