首页 > 其他 > 详细

NC15108 道路建设

时间:2020-10-04 20:00:42      阅读:25      评论:0      收藏:0      [点我收藏+]

\(MST\)裸题

const int N=110;
int g[N][N];
int dist[N];
bool vis[N];
int money;
int n,m;

int prim()
{
    memset(dist,0x3f,sizeof dist);
    memset(vis,0,sizeof vis);
    dist[1]=0;
    int res=0;

    for(int i=0;i<n;i++)
    {
        int t=-1;
        for(int j=1;j<=n;j++)
            if(!vis[j] && (t==-1 || dist[t]>dist[j]))
                t=j;
        if(dist[t] == INF) return -1;

        vis[t]=true;
        res+=dist[t];

        for(int j=1;j<=n;j++)
            dist[j]=min(dist[j],g[t][j]);
    }
    return res;
}

int main()
{
    while(cin>>money>>m>>n)
    {
        memset(g,0x3f,sizeof g);

        while(m--)
        {
            int a,b,c;
            cin>>a>>b>>c;
            g[a][b]=min(g[a][b],c);
        }

        int t=prim();
        if(~t && t<=money) puts("Yes");
        else puts("No");
    }

    //system("pause");
}

NC15108 道路建设

原文:https://www.cnblogs.com/fxh0707/p/13767799.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!