2/3 P6770 [USACO05MAR]Checking an Alibi 不在场的证明

news/2024/12/29 20:00:22/

https://www.luogu.com.cn/problem/P6770
本题就是输出从结点1到各个有牛的结点的最小时间在M范围内的有牛结点,升序输出其编号。
刚开始没能ac,错误应该在输出格式上。
算法之外的代码应该写的逻辑清晰一点,一个数组尽量只代表一个意思。
(使用了链式前向星和对优化,算是最短路径的复杂度最低的揭发了,即使数据量大到十万级别也没事)

#include <bits/stdc++.h>using namespace std;
const int maxn=500005;
typedef long long ll;
const int inf=0x7fffffff;
struct node
{int to,dis,nxt;
}e[maxn];
int head[maxn],s,t,u,v,w,nxt,cnt,F,P,C,M,tmp;
ll dist[maxn],minn,cow[maxn];
bool vis[maxn];
void add_edge(int from,int to,int dis)
{e[++cnt].to=to;e[cnt].dis=dis;e[cnt].nxt=head[from];head[from]=cnt;
}
struct node1
{int dis,pos;bool operator <(const node1 &x)const{return x.dis<dis;}
};
priority_queue<node1>q;
void dijkstra()
{s=1;dist[s]=0;q.push((node1){0,s}); //到该点的距离为0,位置为点swhile(!q.empty()){node1 cur=q.top();q.pop();int x=cur.pos;if(vis[x]) continue;vis[x]=1;for(int i=head[x];i!=-1;i=e[i].nxt){int y=e[i].to;if(dist[y]>dist[x]+e[i].dis){dist[y]=dist[x]+e[i].dis;if(!vis[y]){q.push((node1){dist[y],y});}}}}
}
int main()
{scanf("%d%d%d%d",&F,&P,&C,&M);head[0]=-1;for(int i=1;i<=F;i++){dist[i]=inf;head[i]=-1;}for(int i=1;i<=P;i++){scanf("%d%d%d",&u,&v,&w);add_edge(u,v,w);add_edge(v,u,w);}dijkstra();for (int i = 1, x; i <= C; i++){scanf("%d", &x);if (dist[x] <= M)cow[++tmp] = i;}printf("%d\n", tmp);sort(cow + 1, cow + tmp + 1);for (int i = 1; i <= tmp; i++)printf("%d\n", cow[i]);return 0;
}

http://www.ppmy.cn/news/181779.html

相关文章

neovis.js的一个坑

在vue中引入neovis.js出现的bug&#xff0c;报错信息如下 This dependency was not found: * core-js/modules/web.dom-collections.iterator.js in ./node_modules/neovis.js/dist/neovis-without-dependencies.js To install it, you can run: npm install --save core-js/…

校招面试算法集训11-3

这三道题面试难度都在中等偏上 这道题较难&#xff0c;先略去 分治合并链表

洛谷P6770 Checking an Alibi 不在场的证明

题目描述 农场有 FF 个点&#xff0c;已知 PP 条边以及每条边的起点终点和通过时间&#xff0c;给出 CC 个有牛的点&#xff0c;求在规定时间 MM 内能从起点到达牛当前位置的牛的数量&#xff0c;并按升序输出牛的编号。 谷仓里发现谷物被盗&#xff01;FJ 正试图从 CC 只奶牛…

python输出unicode字符_如何优雅解决python2.x的unicode编码优雅输出?

python2.x字符编码有一个这样的问题&#xff0c;类似下面这样&#xff1a; >>> d {usubType: u\u5f55\u97f3\u5ba4\u7248, uname: u\u5468\u6770\u4f26\u7684\u5e8a\u8fb9\u6545\u4e8b} >>> print d {usubType: u\u5f55\u97f3\u5ba4\u7248, uname: u\u5468\…

微信公众号自动回复

先进行公众号服务器配置&#xff0c;不会的可参考博主上篇http://www.cnblogs.com/yanan7890/p/8629094.html Controller&#xff1a; package controller;import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java…

前端按字母搜索相关内容

首先引用pinyin.js文件&#xff0c;这里这个文件没有源文件&#xff0c;自己在网上下载后把里面的方法改了一下&#xff0c;里面有个ConvertPinyin()方法 var PinYin {"a": "\u554a\u963f\u9515","ai": "\u57c3\u6328\u54ce\u5509\u54c0\u…

vue传中文标点_vue项目引入第三方高德地图实现标点定位

vue项目中,高德地图使用。 引入vue中。异步导入vue中。 gaoDe(key) {window.onApiLoaded = function () {var map = new AMap.Map(‘container‘, {resizeEnable: true, center: [113.951955, 22.530825], zoom: 16 }); } var url = `https://webapi.amap.com/maps? v=1.4.15…

万能将unicode编码转换为汉字的方法

Python中有两种默认的字符串&#xff1a;str和unicode。在Python中一定要注意区分“Unicode字符串” 和“unicode对象”的区别。后面所有的“unicode字符串”指的都是python里的“unicode对象”。 事实上在Python中并没有“Unicode字符串”这样的东西&#xff0c;只有“unicod…