首师大附中科创教育平台 我的刷题记录 0325 50212228海岛帝国:LYF的太空运输站

今天给大家献上“D”级题:50212228海岛帝国:LYF的太空运输站!!

   试题编号:0325    
50212228海岛帝国:LYF的太空运输站
难度级别:D; 运行时间限制:40ms; 运行空间限制:256000KB; 代码长度限制:2000000B

试题描述

最近,“购物券”WHT在“药师傅”帝国资源大会上提出了“SSTS”太空运输站计划。由于恐怖分子前些日子刚猖狂完,炸毁高楼无数,YSF不得不执行WHT丧心病狂的计划,“演员”KLINT(众所周知,又一大土豪同学)捐赠了众多资源,和高级技术。太空运输站建成了,YSF任命LYF为站长,LJX为副站长。第一波运输计划开始了!可是,当运输军队到达中转站金星时,遭到了盗取新技术的恐怖分子的袭击。由于没有足够的兵力,整个舰队全军覆没,LYF损失惨重,恼羞成怒,随即决定让YSM和LJX调用一半星际舰队。可恐怖分子太强,再次损失惨重。YSF无奈,决定给“过路费”。但YSF是个贪财的人,所以,YSF想让给的钱最少。他把这个难题交给了LYF,LYF又把这个任务交给了LJX,所以请你帮帮可怜的LYF,帮他编一个程序。另外,悬赏10000000000000000000000000000000000$,所以赶快做吧!


输入

* 第一行:两个整数:n表示有n个城市,m表示有m条道路。
* 接下来的m行,每行三个整数:a,b,c表示从a星到达b星的路花费是c

输出

输出需要钱数最少方案

输入示例

6 9
2 4 11
3 5 13
4 6 3
5 6 4
2 3 6
4 5 7
1 2 1
3 4 9
1 3 2

输出示例

19

其他说明

我并没有开玩笑,钱找LJX或YSF这两个财政部部长要都可以
生成树 Prim 呵呵呵
n<=15,m<=18
40ms够了吧?

好的,以上就是50212228海岛帝国:LYF的太空运输站的题目要求,现在献上代码!!!当当当!!!

#include<iostream>
using namespace std;
int dis[20],book[20]={0};
int h[20],pos[20],size;
void swap(int x,int y)
{
     int t;
     t=h[x];
     h[x]=h[y];
     h[y]=t;
     t=pos[h[x]];
     pos[h[x]]=pos[h[y]];
     pos[h[y]]=t;
     return ;
}
void siftdown(int i)
{
     int t,flag=0;
     while(i*2<=size&&flag==0)
     {
          if(dis[h[i]]>dis[h[i*2]]) t=i*2;
          else t=i;
          if(i*2+1<=size)
              if(dis[h[t]]>dis[h[i*2+1]]) t=i*2+1;
          if(t!=i)
          {
              swap(t,i);
              i=t;
          }
          else flag=1;
     }
     return ;
}
void siftup(int i)
{
     int flag=0;
     if(i==1) return ;
     while(i!=1&&flag==0)
     {
         if(dis[h[i]]<dis[h[i/2]]) swap(i,i/2);
         else flag=1;
         i/=2;
     }
     return ;
}
int pop()
{
    int t;
    t=h[1];
    pos[t]=0;
    h[1]=h[size];
    pos[h[1]]=1;
    size--;
    siftdown(1);
    return t;
}
int main()
{
    int n,m,i,j,k;
    int u[30],v[30],w[30],first[20],next[30];
    int inf=9999999;
    int count=0,sum=0;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++) scanf("%d%d%d",&u[i],&v[i],&w[i]);
    for(i=m+1;i<=2*m;i++)
    {
        u[i]=v[i-m];
        v[i]=u[i-m];
        w[i]=w[i-m];
    }
    for(i=1;i<=n;i++) first[i]=-1;
    for(i=1;i<=2*m;i++)
    {
        next[i]=first[u[i]];
        first[u[i]]=i;
    }
    book[1]=1;
    count++;
    dis[1]=0;
    for(i=2;i<=n;i++) dis[i]=inf;
    k=first[1];
    while(k!=-1)
    {
        dis[v[k]]=w[k];
        k=next[k];
    }
    size=n;
    for(i=1;i<=size;i++)
    {
        h[i]=i;
        pos[i]=i;
    }
    for(i=size/2;i>=1;i--)
    {
        siftdown(i);
    }
    pop();
    while(count<n)
    {
        j=pop();
        book[j]=1;
        count++;
        sum+=dis[j];
        k=first[j];
        while(k!=-1)
        {
            if(book[v[k]]==0&&dis[v[k]]>w[k])
            {
                dis[v[k]]=w[k];
                siftup(pos[v[k]]);
            }
            k=next[k];
        }
    }
    printf("%d",sum);
}

50212228海岛帝国:LYF的太空运输站!!!!!

时间: 2024-12-31 05:56:01

首师大附中科创教育平台 我的刷题记录 0325 50212228海岛帝国:LYF的太空运输站的相关文章

首师大附中科创教育平台 我的刷题记录 0324 99999999海岛帝国:运输资源

今天给大家献上“C”级题:99999999海岛帝国:运输资源!! 试题编号:0324   99999999海岛帝国:运输资源 难度级别:C: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述      YSF考虑到“药师傅”帝国现在资源极度不平均,于是,商讨启用南水北调工程.YZM为首席工程师.现在,YSF由于工作紧张,准备军用物资和民用物资.但他要时时关注运输工程动态,因为货物很珍贵,是最新发明的T-2500智能生产行业制造机.用于工.农

首师大附中科创教育平台 我的刷题记录 0313 50111117海岛帝国:诞辰之日

今天给大家献上“C”级题:50111117海岛帝国:诞辰之日!! 试题编号:0313   50111117海岛帝国:诞辰之日 难度级别:C: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 YSF自从上次“被盗投降”完(带着一大堆债)回去以后,YSF对“海盗”怀念至今,他想要建立一个“药师傅”海岛帝国. 今天,他要像“管理部”那样去探寻一个新大陆!由于YSF得到了“郭同学”TONY.STARK的赞助.买了好多好多“旧手机”. 从而以某种不

首师大附中科创教育平台 我的刷题记录(3)

首师大附中科创教育平台我的刷题记录(给大家刷11--15题吧) 仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include<iostream> #include<math.h> using namespace std; int main() { int x,y; cin>>x; y=abs(x+2); cout<<x*x-y+5<<endl; return 0; } 绝对值函数 #include

首师大附中科创教育平台 我的刷题记录(7)

首师大附中科创教育平台我的刷题记录(这次给大家刷多一点,31--40题吧) 仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include<iostream> using namespace std; int main() { int n; cin>>n; if(n%4==0&&n%100!=0||n%400==0) cout<<"yes"<<endl; else cout&

首师大附中科创教育平台 我的刷题记录(6)

首师大附中科创教育平台我的刷题记录(给大家刷26--30题吧) 仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include<iostream> #include<math.h> using namespace std; int main() { double I,R,r,E; cin>>I>>R>>r; E=I*(R+r); cout<<E<<endl; return 0

首师大附中科创教育平台 我的刷题记录(5)

首师大附中科创教育平台我的刷题记录(给大家刷21--25题吧) 仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include<iostream> #include<math.h> using namespace std; int main() { double a,b,x; cin>>a>>b; x=-b/a; cout<<x<<endl; return 0; } 一元一次方程 #in

首师大附中科创教育平台 我的刷题记录(4)

首师大附中科创教育平台我的刷题记录(给大家刷16--20题吧) 仅供同学们参考,禁止抄袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include<iostream> #include<math.h> using namespace std; int main() { double a,b,c; cin>>a; b=2*a*3.14159; c=a*a*3.14159; cout<<b<<" "&l

首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼

今天给大家献上"C"级题:LJX的校园:入学典礼!! 试题编号:3120       LJX的校园:入学典礼 难度级别:C: 运行时间限制:45ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 LJX上小学啦!他与YSM,YSF,WHT,LTJ等人都是校友.今天,是他人生中"溺亡"的一天.今天,他要向同学们证明他的数学很"乐呵".于是,刚学会简单的A+B问题的他,在课上,向冤家对头 斯沃琪 挑战 QAQ,斯沃琪

首师大附中科创教育平台 我的刷题记录 0284 最强大脑

从现在开始,我的刷题记录都开始给大家一个一个刷!今天给大家献上“E”级题:最强大脑!! 试题编号:0284     最强大脑 难度级别:E: 运行时间限制:3000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 zhb国是一个传说中的国度,国家的居民叫做最强(chang)大脑(diao).Zhb国是一个N×M的矩形方阵,每个格子代表一个街区.然而zhb国是没有交通工具的.居民大脑(diao)们完全靠地面的弹射装置来移动.每个街区都装有弹射装置.使用弹射装置是需