HDU 6705 思维 优化暴力 bfs 优先队列寻找全图第k短路

#include 
#define long long ll
#define N 50014
using namespace std;
struct node {
    int to,len;
    node(){}
    node(int _to,int _len):to(_to),len(_len){}
    bool operator < (const node& a)const{
        return len>a.len;
    }
};
bool cmp(node a,node b){
    return a.len q0;
/**
    在这个优先队列内node存储的是部分的路径信息(一条路径的结尾以及这条路径的长度)
*/
priority_queue  q1;///已知的所有路径的长度
vector  ve[N];
/**
    在这个vector内node存储的是以N号路径为起点,下一跳可以走到那些节点以及单步长度
*/
int a[N],b[N];
void init(int n){
    while(!q1.empty()){
        q1.pop();
    }
    while(!q0.empty()){
        q0.pop();
    }
    for(int i = 1;i<=n;i++){
        ve[i].clear();
    }
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--){
        int n,m,k;
        scanf("%d%d%d",&n,&m,&k);
        init(n);
        for(int i = 1;i<=m;i++){
            int u,v,w;
            scanf("%d%d%d",&u,&v,&w);
            q0.push({v,w});
            q1.push(w);
            ve[u].push_back({v,w});
        }
        for(int i = 1;i<=n;i++){
            sort(ve[i].begin(),ve[i].end(),cmp);
        }
        int mx = 0;
        for(int i = 0;iq1.top()){
                        break;
                    }
                    else{
                        q1.pop();
                        q1.push(len);
                        q0.push(node(y,len));
                    }
                }else{
                    q1.push(len);
                    q0.push(node(y,len));
                }
            }
        }
        for(int i = 0;i

 

你可能感兴趣的:(暴力)