zoukankan      html  css  js  c++  java
  • Xanadu(构图+最短路)

    题解:将修改几次1等价为构图时边的权值即可。跑单源最短路。

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    #define N 301
    #define LL long long
    int n;
    
    int sumedge;
    
    int head[N];
    LL dis[N];
    int vis[N];
    
    queue<int>q;
    
    struct Edge
    {
        
        int x,y,z,nxt;
        Edge(int x=0,int y=0,int z=0,int nxt=0):
        x(x),y(y),z(z),nxt(nxt){}
    }edge[N*N];
    
    void add(int x,int y,int z)
    {
        edge[++sumedge]=Edge(x,y,z,head[x]);
        head[x]=sumedge;
    }
    
    void spfa()
    {
        memset(dis,0x3f,sizeof(dis));
        dis[1]=0;q.push(1);vis[1]=1;
        while(!q.empty())
        {
            int now=q.front();q.pop();vis[now]=false;
            for(int i=head[now];i;i=edge[i].nxt)
            {
                int v=edge[i].y;
                if(dis[v]>dis[now]+edge[i].z)
                {
                    dis[v]=dis[now]+edge[i].z;
                    if(!vis[v])
                    {
                        vis[v]=true;
                        q.push(v);
                    }
                }
            }
        }
    }
    
    int main()
    {
        
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            int js=0;
            for(int j=1;j<=n;j++)
            {
                int x;
                scanf("%d",&x);
                if(x) add(i,j,js++);
            }
        }
        spfa();
          if(dis[n]==0x3f3f3f)printf("-1
    ");
        else printf("%lld
    ",dis[n]);
        return 0;
    }
  • 相关阅读:
    软件测试(来自于网络)
    selenium常用命令
    新员工入门
    常用测试点
    测试leader职责
    软件测试 —— 用例设计4(读书分享)
    Tomcat 基础二
    Github Pull Request的提出与采纳
    Unix套接字接口
    健壮的I/O(RIO)
  • 原文地址:https://www.cnblogs.com/zzyh/p/14873260.html
Copyright © 2011-2022 走看看