社区讨论
开了快读WA了九个点
P1339[USACO09OCT] Heat Wave G参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi6xx4sd
- 此快照首次捕获于
- 2025/11/20 12:37 4 个月前
- 此快照最后确认于
- 2025/11/20 12:37 4 个月前
RT 开了快读,后九个点wa了,不开快读就过了。。。
CPP#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
#include<cctype>
#define oo (1ll<<31)-1
using namespace std;
inline void read(int &x)
{
x=0;char ch=getchar();
while(ch<'0'||ch>'9')ch=getchar();
while(ch>'0'&&ch<'9')
{
x=(x<<3)+(x<<1)+(ch^'0');
ch=getchar();
}
}
struct node
{
int dis;
int to;
int next;
}edge[21111];
int dis[10000];
int head[10000];
int v[10000];
int tot=0;
priority_queue<pair<int,int> >q;
void add(int x,int y,int w)
{
edge[++tot].dis=w;
edge[tot].to=y;
edge[tot].next=head[x];
head[x]=tot;
}
int main()
{
int n,m,a,b;
read(n);read(m);read(a);read(b);
for(int i=1;i<=m;i++)
{
int x,y,w;
read(x);read(y);read(w);
add(x,y,w);
add(y,x,w);
}
for(int i=1;i<=n;i++)
{
dis[i]=oo;
}
memset(v,0,sizeof(v));
dis[a]=0;
q.push(make_pair(0,a));
while(!q.empty())
{
int i=q.top().second;q.pop();
if(v[i])continue;
v[i]=1;
for(int j=head[i];j;j=edge[j].next)
{
int k=edge[j].to;
if(dis[k]>dis[i]+edge[j].dis)
{
// cout<<"point:"<<x<<" ";
// cout<<to<<":"<<dis[to];
dis[k]=dis[i]+edge[j].dis;
q.push(make_pair(-dis[k],k));
// cout<<"-->"<<dis[to]<<endl;
}
}
}
cout<<dis[b]<<endl;
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...