标准版AC,弱化版90
查看原帖
标准版AC,弱化版90
925688
Diary_51楼主2025/7/2 10:26
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005
struct edge
{
	long long v,w;
};
struct node
{
	long long dis,u;
	bool operator>(const node& a)const
	{
		return dis > a.dis;
	}
};
vector<edge> e[MAXN];
long long dis[MAXN],vis[MAXN];
priority_queue<node,vector<node>,greater<node> > q;
int main()
{
	long long n,m,s,u,v,l;
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v>>l;
		e[u].push_back({v,l});
	}
	memset(dis,0x3f,(n+1)*sizeof(long long));
	memset(vis,0,(n+1)*sizeof(long long));
	dis[s]=0;
	q.push({0,s});
	while(!q.empty())
	{
		long long u=q.top().u;
		q.pop();
		if(vis[u])
			continue;
		vis[u]=1;
		for(auto ed : e[u])
		{
			long long v=ed.v,w=ed.w;
			if(dis[v]>dis[u]+w)
			{
				dis[v]=dis[u]+w;
				q.push({dis[v],v});
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
        /*if(dis[i]==0x3f)
        {
            cout<<2147483647<<" ";
            continue;
        }*/
		cout<<dis[i]<<" ";
	}
	cout<<endl;
	return 0;
}

这是90分的代码

可是,如果把最后注释掉的内容放入代码,即

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005
struct edge
{
	long long v,w;
};
struct node
{
	long long dis,u;
	bool operator>(const node& a)const
	{
		return dis > a.dis;
	}
};
vector<edge> e[MAXN];
long long dis[MAXN],vis[MAXN];
priority_queue<node,vector<node>,greater<node> > q;
int main()
{
	long long n,m,s,u,v,l;
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v>>l;
		e[u].push_back({v,l});
	}
	memset(dis,0x3f,(n+1)*sizeof(long long));
	memset(vis,0,(n+1)*sizeof(long long));
	dis[s]=0;
	q.push({0,s});
	while(!q.empty())
	{
		long long u=q.top().u;
		q.pop();
		if(vis[u])
			continue;
		vis[u]=1;
		for(auto ed : e[u])
		{
			long long v=ed.v,w=ed.w;
			if(dis[v]>dis[u]+w)
			{
				dis[v]=dis[u]+w;
				q.push({dis[v],v});
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
        if(dis[i]==0x3f)
        {
            cout<<2147483647<<" ";
            continue;
        }
		cout<<dis[i]<<" ";
	}
	cout<<endl;
	return 0;
}

就变成了60分

求调

2025/7/2 10:26
加载中...