为啥tle和re,还有,答案也不太对,乘以2才对。

P1342 请柬

kabout @ 2020-07-09 17:18:21

#include<bits/stdc++.h>
using namespace std;
struct node{
    long long x,w;
    node(long long  _x=0,long long _w=0):x(_x),w(_w){}
    bool operator <(const node&a)const{return w>a.w;}
};
long long n,m,dis[1000001],ans=0;
bool v[1000001];
vector<node>T1[1000010],T2[1000001];
priority_queue<node>que;
int main()
{
    std::ios::sync_with_stdio(false);
    cin>>n>>m;
    memset(dis,0x3f,sizeof(dis));
    //for(int i=1;i<=n;i++)cout<<dis[i]<<" ";//
    //cout<<endl;//
    int x,y,z;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y>>z;
        if(x==y)continue;
        T1[x].push_back(node(y,z));
        T2[y].push_back(node(x,z));
    }
    dis[1]=0;
    que.push(node(1,0));
    while(!que.empty())
    {
        x=que.top().x;
        que.pop();
        if(v[x])continue;
        v[x]=1;
        que.pop();
        for(int i=0;i<T1[x].size();i++)
        {
            if(v[T1[x][i].x]==0&&dis[T1[x][i].x]>T1[x][i].w+dis[x])
            {
                dis[T1[x][i].x]=T1[x][i].w+dis[x];
                que.push(node(T1[x][i].x,dis[T1[x][i].x]));
            }
        }
    }
//  for(int i=1;i<=n;i++)cout<<dis[i]<<" ";//
//  cout<<endl;//
    for(int i=2;i<=n;i++)ans+=dis[i];
//  cout<<ans<<endl;
    for(int i=2;i<=n;i++)
    {
        memset(dis,0x3f,sizeof(dis));
        memset(v,0,sizeof(v));
        que.push(node(i,0));
        dis[i]=0;
        while(!que.empty())
        {
            x=que.top().x;
            que.pop();
            if(v[x])continue;
            v[x]=1;
            que.pop();
            for(int i=0;i<T2[x].size();i++)
            {
                if(v[T2[x][i].x]==0&&dis[T2[x][i].x]>T2[x][i].w+dis[x])
                {
                    dis[T2[x][i].x]=T2[x][i].w+dis[x];
                    que.push(node(T2[x][i].x,dis[T2[x][i].x]));
                }
            }
            if(x==1)break;
        }
        ans+=dis[1];
    }
    cout<<ans*2;
    return 0;
 } 

by Y_J_Y @ 2020-07-09 17:27:09

谢谢楼主让我发现了5倍经验


by kabout @ 2020-07-09 17:27:43


by kabout @ 2020-07-09 17:28:02

救人要紧


by __Andy_zhou__ @ 2020-07-09 17:32:38

这不应该放到学术版去吗?


by Y_J_Y @ 2020-07-09 17:33:08

我交了一下发现只A了一个点,t了三个.....


by __Andy_zhou__ @ 2020-07-09 17:33:39

要不然没有大佬会救你的


by __Andy_zhou__ @ 2020-07-09 17:34:40

有些大佬专门在学术版“救人”


by kabout @ 2020-07-09 17:42:22

不会吧,


by jyb666 @ 2020-07-09 17:46:08

@Andy_zhou 我想说,你知道这是什么版吗?


by _tommysun_ @ 2020-07-09 17:48:46

@Andy_zhou 我想说,你知道这是什么版吗?


| 下一页