文章

60

粉丝

361

获赞

43

访问

524.7k

头像
打卡
P1565 中国科学院大学2021年机试题
发布于2021年1月26日 10:54
阅读数 8.3k

#include<iostream>
#include<string>
#include<string.h>
#include<vector>
#include<stdio.h>
#include <queue>
#include<algorithm>
using namespace std;
const int maxn=205;

vector<pair<int,int>>E[maxn];
int n,m;
int d[maxn],inq[maxn];//标记在不在队列

void spfa(int s,int t)
{
	queue<int>q;
	q.push(s),d[s]=0,inq[s]=1;
	while(!q.empty())
	{
		int now=q.front ();
		q.pop();inq[now]=0;
		//遍历顶点所有边
		for(int i=0;i<E[now].size();i++)
		{
			int v=E[now][i].first;
			if(d[v]>d[now]+E[now][i].second )
			{
				d[v]=d[now]+E[now][i].second ;
				if(inq[v]==1)continue;
				inq[v]=1;
				q.push(v);
			}
		}
	}
	cout<<d[t]<<endl;
}

void init()
{
	for(int i=0;i<maxn;i++) E[i].clear();
	for(int i=0;i<maxn;i++) inq[i]=0;
	for (int i=0;i<maxn;i++)d[i]=1e9;
}
int main()
{
	while(cin>>n>>m)
	{
		if(n+m==0)break;
		init();
		for(int i=0;i<m;i++)
		{
			int x...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发