当前位置:网站首页>PAT 1163 Dijkstra Sequence(30)
PAT 1163 Dijkstra Sequence(30)
2022-08-01 12:51:00 【此杭非彼航】
题目



代码
参考代码
// 相等的时候有多种取法, 逐一判断
#include<bits/stdc++.h>
using namespace std;
int inf = 0x7f7f7f7f;
int edge[1100][1100];
int dist[1100];
bool visit[1100];
int main() {
fill(edge[0], edge[0] + 1100 * 1100, inf);
int nv, ne;
cin >> nv >> ne;
for(int i = 0; i < ne; i++) {
int a, b, weight;
cin >> a >> b >> weight;
edge[a][b] = edge[b][a] = weight;
}
//cout << edge[3][4] << endl;
// 开始判断
int k;
cin >> k;
for(int i = 0; i < k; i++) {
// 记录一下待判断的seq
vector<int> v(nv);
// 存一下
for(int j = 0; j < nv; j++)
cin >> v[j];
//cout << v[0] << endl;
// 开始判断
// 初始化dist, visit
fill(dist, dist + 1100, inf);
fill(visit, visit + 1100, false);
// 起始点
dist[v[0]] = 0;
// 依次检查
bool flag = true;
for(int j = 0; j < nv; j++) {
// 寻找最小的dist, 判断是否符合
int minn = inf;
vector<int> record;
for(int k = 1; k <= nv; k++) {
if(visit[k] == false) {
if(dist[k] == minn) record.push_back(k);
else if(dist[k] < minn) {
minn = dist[k];
record.clear();
record.push_back(k);
}
}
}
int checkpoint = -1;
/* for(int k = 0; k < record.size(); k++) cout << record[k] << " "; cout << endl; */
for(int k = 0; k < record.size(); k++) {
if(record[k] == v[j]) {
checkpoint = k;
break;
}
}
// 看看能不能找到
if(checkpoint == -1) {
flag = false;
break;
}
// 如果可以找到
int u = v[j];
visit[u] = true;
// 后面更新dist
for(int v = 1; v <= nv; v++) {
if(visit[v] == false) {
if(dist[v] > dist[u] + edge[u][v]) dist[v] = dist[u] + edge[u][v];
}
}
}
if(flag == false)
cout << "No" << endl;
else cout << "Yes" << endl;
}
return 0;
}
复现代码
#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
int vis[1005],dis[1005],edge[1005][1005];
int main()
{
memset(edge,inf,sizeof(edge));
int nv,ne;
cin>>nv>>ne;
while(ne--){
int x,y,z;
cin>>x>>y>>z;
edge[x][y]=edge[y][x]=z;
}
int cnt;
cin>>cnt;
while(cnt--){
vector<int> v(nv);
for(int i=0;i<nv;i++){
cin>>v[i];
}
fill(dis,dis+1005,inf);
fill(vis,vis+1005,0);
dis[v[0]]=0;//注意顺序
int flag=1;
for(int t=0;t<nv;t++){
int minn=inf;
vector<int> point;
for(int i=0;i<nv;i++){
if(!vis[v[i]]){
if(dis[v[i]]<minn){
minn=dis[v[i]];
point.clear();
point.push_back(v[i]);
}
else if(dis[v[i]]==minn){
point.push_back(v[i]);
}
}
}
int check=-1;
for(int i=0;i<point.size();i++){
if(point[i]==v[t]){
check=point[i];
}
}
if(check==-1){
flag=0;
break;
}
int u=v[t];
vis[u]=1;
for(int v=1;v<=nv;v++){
if(!vis[v]&&dis[u]+edge[u][v]<dis[v]){
dis[v]=dis[u]+edge[u][v];
}
}
}
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
参考文章
边栏推荐
- 芝加哥丰田技术学院 | Leveraging Natural Supervision for Language Representation Learning and Generation(利用自然监督进行语言表示学习和生成)
- How to Integrate Your Service Registry with Istio?
- 【StoneDB Class】入门第二课:StoneDB 整体架构解析
- sql is not null 优化(oracle语句索引优化)
- Do wildcard SSL certificates not support multiple domains?
- R language ggplot2 visualization: use ggpubr package ggscatter function visualization scatterplot, use xscale wasn't entirely specified X axis measurement adjustment function, set the X coordinate for
- 嵌入式开发:创建和使用可移植类型的7个技巧
- Grafana 9.0 released, Prometheus and Loki query builders, new navigation, heatmap panels and more!
- 重磅消息 | Authing 实现与西门子低代码平台的集成
- fh511小风扇主控芯片 便携式小风扇专用8脚IC 三档小风扇升压芯片sop8
猜你喜欢

Windows 安装PostgreSQL

JMP Pro 16.0 software installation package download and installation tutorial

MySQL调优

初级必备:单例模式的7个问题

多线程案例——阻塞式队列

让程序员早点下班的效率工具

Fault 007: The dexp derivative is inexplicably interrupted

人像分割技术解析与应用

What is consistent hashing?In what scenarios can it be applied?

【StoneDB Class】入门第二课:StoneDB 整体架构解析
随机推荐
Meshlab & Open3D SOR filtering
bpmn-process-designer基础上进行自定义样式(工具、元素、菜单)
求方阵的无穷范数「建议收藏」
iframe tag attribute description detailed [easy to understand]
动态库、静态库浅析
让程序员早点下班的效率工具
34、树莓派进行人体姿态检测并进行语音播报
Programmer's self-cultivation
MySQL调优
win10系统重装,无法登录进行同步的情况下chrome数据恢复
阿里云官方 Redis 开发规范
批量任务导入到数据库中
Windows 安装PostgreSQL
postgresql之page分配管理(一)
六石编程学:问题要面对,办法要技巧,做不好的功能要想办法
postgresql之page分配管理(二)
tensorflow2.0手写数字识别(tensorflow手写体识别)
芝加哥丰田技术学院 | Leveraging Natural Supervision for Language Representation Learning and Generation(利用自然监督进行语言表示学习和生成)
Istio投入生产的障碍以及如何解决这些问题
人像分割技术解析与应用