您当前的位置: 首页 > 

钟钟终

暂无认证

  • 3浏览

    0关注

    232博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

求解次短路长度,最短路条数

钟钟终 发布时间:2022-03-13 22:12:49 ,浏览量:3

求解次短路长度

https://www.luogu.com.cn/problem/P2865

#include 
#define int long long
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1e6+5;
struct Edge
{
    int to,nxt,dis;
}e[maxn];
int dist[maxn][2],head[maxn],cnt,n,r;
bool vis[maxn];
void add(int from,int to,int w)
{
    e[++cnt].to=to;
    e[cnt].dis=w;
    e[cnt].nxt=head[from];
    head[from]=cnt;
}
queueq;
void spfa(int u)
{
    memset(dist,inf,sizeof(dist));
    vis[u]=1;
    dist[u][0]=0;
    q.push(u);
    while(!q.empty())
    {
        int u=q.front();q.pop();
        vis[u]=0;
        for(int i=head[u];i;i=e[i].nxt)
        {
            int v=e[i].to;
            if(dist[v][0]>dist[u][0]+e[i].dis)
            {
                dist[v][1]=dist[v][0];
                dist[v][0]=dist[u][0]+e[i].dis;
                if(!vis[v])
                    vis[v]=1,q.push(v);
            }
            if(dist[v][1]>dist[u][0]+e[i].dis&&dist[v][0]dist[u][1]+e[i].dis)
            {
                dist[v][1]=dist[u][1]+e[i].dis;
                if(!vis[v])
                    vis[v]=1,q.push(v);
            }
        }
    }
}
signed main()
{
    scanf("%lld%lld",&n,&r);
    for(int i=1;i            
关注
打赏
1664378814
查看更多评论
0.0840s