弱鸡求助,玄学问题,93分
查看原帖
弱鸡求助,玄学问题,93分
355559
FutureThx楼主2020/9/6 11:59

Floyd+O2Floyd + O_2 水过去后就想用 dijkstradijkstra 打个快一点的解法,结果 RERE 了,交了快 44 页了,求大佬帮助!

#include <iostream>
using namespace std;
int main(){
    const int inf = 70002;
    int e[502][502],n,m,t,c,f[502],dis[502];
    cin >> n >> m >> t >> c;
    for(int i = 1;i <= n;i++)
       for(int j = 1;j <=  n;j++)
          e[i][j] = i == j ? 0 : inf;
    for(int i = 1;i <= m;i++){
        int t1,t2,t3;
        cin >> t1 >> t2 >> t3;
        e[t1][t2] = min(t3,e[t1][t2]);
        e[t2][t1] = min(t3,e[t2][t1]);
    }
    for(int i = 1;i <= n;i++)
       dis[i] = e[i][1];
    f[1] = 1;
    for(int i = 1;i <= n;i++){
        int minn = inf,u;
        for(int j = 1;j <= n;j++)
            if(f[j] == 0 && dis[j] < minn)
               minn = dis[j],u = j;
        f[u] = 1;
        for(int j = 1;j <= n;j++)
           if(f[j] == 0)
              dis[j] = min(dis[j],dis[u] + e[j][u]);
    }
    int a[501],t2 = 0;
    for(int i = 1;i <= t;i++){
        int x;
        cin >> x;
        if(dis[x] <= c)
           t2++,a[t2] = i;
    }
    cout << t2 << endl;
    for(int i = 1;i <= t2;i++)
        cout << a[i] << endl;
    return 0;
}
2020/9/6 11:59
加载中...