我人傻了
  • 板块灌水区
  • 楼主btng_smith666
  • 当前回复11
  • 已保存回复11
  • 发布时间2021/10/20 22:34
  • 上次更新2023/11/4 03:06:42
查看原帖
我人傻了
149983
btng_smith666楼主2021/10/20 22:34

临近CSP-S结果连个dijkstra都写不明白了/kk

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define pr(x) printf("%d",x)
#define db double
#define Fe getchar()
#define Au puts("")
#define For(i,x,y) for(register int i=x;i<=y;i++)
#define Rep(i,x,y) for(register int i=x;i>=y;i--)
using namespace std;
const int inf=2147483647;
const int mod=1e9+7;
inline int read()
{
	int x=0,f=1;
	char c=getchar();
	while(!isdigit(c))
	{
		if(c=='-')
			f=-1;
		c=getchar();
	}
	while(isdigit(c))
		x=(x<<1)+(x<<3)+c-'0',c=getchar();
	return x*f;
}
inline void print(int x)
{
	if(x<0)
		putchar('-'),x=-x;
	if(x>9)
		print(x/10);
	putchar(x%10+'0');
}
const int MAXN=100001;
struct edge{
	int dis,to,nxt;
}e[MAXN<<2];
int n,m,s,cnt,head[MAXN],dis[MAXN];
bool vis[MAXN];
struct node{
	int pos,dis;
	bool operator <( const node &x )const 
	{
		return x.dis<dis;
	}
};
priority_queue<node> q;
void add_edge(int u,int v,int d)
{
	cnt++;
	e[cnt].dis=d;
	e[cnt].to=v;
	e[cnt].nxt=head[u];
	head[u]=cnt;
}
void dijkstra()
{
	dis[s]=0;
	q.push((node){0,s});
	while(!q.empty())
	{
		node tmp=q.top();
		q.pop();
		int x=tmp.pos,d=tmp.dis;
		if(vis[x])
			continue;
		vis[x]=1;
		for(int i=head[x];i;i=e[i].nxt)
		{
			int y=e[i].to;
			if(dis[y]>dis[x]+e[i].dis)
			{
				dis[y]=dis[x]+e[i].dis;
				if(!vis[y])
					q.push((node){dis[y],y});
			}
		}
	}
}
int main()
{
//	freopen("____.in","r",stdin);
//	freopen("____.out","w",stdout);
	n=read(),m=read(),s=read();
	for(int i=1;i<=n;i++)
		dis[i]=inf;
	while(m--)
	{
		int u,v,d;
		u=read(),v=read(),d=read();
		add_edge(u,v,d);
	}
	for(int i=1;i<=n;i++)
		printf("%d ",dis[i]);
	return 0;
}

求大佬帮忙调错awa

2021/10/20 22:34
加载中...