門前町

新人报道

居然可以用MarkdownORZ,那就水一发

#include <bits/stdc++.h>
#define maxn 100005
using namespace std;
class node{
	public:
		int pos;
		int dis;
		bool operator<(const node& a)const{
			return this->dis>a.dis;
		}
};
int n,m,s,dis[maxn];
vector<pair<int,int> >G[maxn];
bool vis[maxn];
priority_queue<node> q;
void dij(){
    for(int i=1;i<=n;i++)dis[i]=INT_MAX;
    dis[s]=0;
    q.push((node){s,0});
    while(!q.empty()){
    	int u=q.top().pos;
    	q.pop();
    	if(vis[u])continue;
    	vis[u]=1;
    	for(vector<pair<int,int> >::iterator it=G[u].begin();it!=G[u].end();it++){
    		if(dis[it->first]>dis[u]+it->second)dis[it->first]=dis[u]+it->second;
    		if(!vis[it->first])q.push((node){it->first,dis[it->first]});
		}
	}
    return;
}

int main()
{
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=m;i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        G[u].push_back(make_pair(v,w));
    }
    dij();
    for(int i=1;i<=n;i++)printf("%d ",dis[i]);
    return 0;
}
1赞

好神奇的语法高亮

所以你写了这一段有啥意义……还没写完?

新人报道*^▽^)/★*☆