首页 > 电脑

您能帮我想想嘛?必有重赏

更新时间2019-02-03 12:35:12

描述

zpyzoj不知不觉就收录100道题啦!

C位zpyzoier从一中各地赶来机房参与庆典。一中此时被划分成了F个地区,标号1到F,还有P条双向道路连接着这些地区。通过这些道路需要花费一定时间

留给zpyzoier们赶往机房的时间不多了!他们必须在M秒内赶往位于节点1的机房,否则就会错过庆典!

给出一中的地图和zpyzoier们目前所处的位置,请判断哪些zpyzoier能赶到庆典。

输入格式

第一行输入四个整数F P C M

接下来P行每行三个整数描述一条路,起点,终点,通过时间

接下来C行每行一个整数,表示一个zpyzoier所在的地点

输出格式

第一行输出能赶往庆典的zpyzoier的数量

接下来从小到大输出他们的编号,每个zpyzoier占一行

样例一

input

7 6 5 8
1 4 2
1 2 1
2 3 6
3 5 5
5 4 6
1 7 9
1
4
5
3
7

output

4
1
2
3
4

限制与约定

1≤C≤100,1≤M≤70000,1≤F≤500,1≤P≤1000 1≤C≤100,1≤M≤70000,1≤F≤500,1≤P≤1000

时间限制:1s

空间限制:64MB


这个是按Usaco 2005改的(你们老师偷懒了)

题目有点小难度,你若真心要学习c语言,不建议直接参考别人的程序(最终你无论是考试还是比赛终要靠自己完成的),以下是我按网上C++改为C的,你参考下

#include<stdio.h>

#include <string.h>

////Usaco2005

int dist[1001][1001];

int ans[1001];

int min(int a,int b)

{

    return (a<b)?a:b; 

}

int main()

{

    int i,j,k,x,y,z;

    int n,m,c,t,len;

    memset(dist,127/3,sizeof(dist));

    for (i=1; i<=n; i++)dist[i][i]=0;

    scanf("%d%d%d%d",&n,&m,&c,&t);

    for(  i=1; i<=m; i++)

        {

            scanf("%d%d%d",&x,&y,&z);

            if (z<=t)

                {

                    dist[x][y]=min(dist[x][y],z);

                    dist[y][x]=dist[x][y];

                }

        }

    for (  k=1; k<=n; k++)

        for (  i=1; i<=n; i++)

            for (  j=1; j<=n; j++)

                if (i!=j)

                    if (dist[i][k]+dist[k][j]<dist[i][j])

                        dist[i][j]=dist[i][k]+dist[k][j];

    for (  i=1; i<=c; i++)

        {

            scanf("%d",&x);

            if (dist[x][1]>t) continue;

            ans[++len]=i;

        }

    for (  i=1; i<len; i++)

        for (  j=i+1; j<=len; j++)

            if(ans[i]>ans[j])

                {

                    t=ans[i];

                    ans[i]=ans[j];

                    ans[j]=t;

                }

    printf("%d ",len);

    for (  i=1; i<=len; i++)

        printf("%d ",ans[i]);

    return 0;

}


能啊,新百胜17787216022

上一篇:绝地求生前面还好好的可是后面就突然自己关机了这是怎么回事,大神求助

下一篇:帮我想想这个问题,用C++编程!谢谢!希望5分钟能能有正解!必有重赏