vector、pair、auto用法

来源:互联网 发布:雪人信封打印软件 编辑:程序博客网 时间:2024/05/09 04:15
#include<bits/stdc++.h>using namespace std;const int maxn = 112345;const int INF = 0x3f3f3f3f;vector<pair<int,int> > edge[maxn];void Link(int st,int ed,int v){    edge[st].push_back(make_pair(ed,v));}int dis[maxn];bool vis[maxn];queue<int> Q;void spfa(int st){    while(Q.empty()==false) Q.pop();    memset(dis,0x3f,sizeof(dis));    memset(vis,0,sizeof(vis));    vis[st] = true;    dis[st] = 0;    Q.push(st);    while(Q.empty() == false){        st = Q.front();        Q.pop();        vis[st] = false;        for(auto it : edge[st]){            int ed = it.first;            int v = it.second;            if(dis[st] + v < dis[ed]){                dis[ed] = dis[st] + v;                if(vis[ed] == false){                    vis[ed] = true;                    Q.push(ed);                }            }        }    }}int main(){    int n,m;    while(~scanf("%d %d",&n,&m)){        for(int i = 0 ; i <= n ; i ++) edge[n].clear();        int st,ed,v;        while(m--){            scanf("%d %d %d",&st,&ed,&v);            Link(st,ed,v);        }        spfa(1);    }    return 0;}

0 0
原创粉丝点击