社区讨论

求助

P1339[USACO09OCT] Heat Wave G参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mi6u1sft
此快照首次捕获于
2025/11/20 10:49
4 个月前
此快照最后确认于
2025/11/20 10:49
4 个月前
查看原帖
只学了一点点floyd,知道会超时,想着拿点分就行,结果就三个是超时,只对了一个点...```cpp
#include<cstdio>
#include<cctype>
#include<algorithm>
using namespace std;
inline int read()
{
    char ch=getchar();
    int x=0;
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))
    {
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x;
}
inline void print(int x)
{
    if(x>9)print(x%10);
    putchar(x%10+48);
}
int n,m,a,b,dis[3000][3000];
void init()
{
    memset(dis,0x3f,sizeof(dis));
    n=read();
    m=read();
    a=read();
    b=read();
    int a,b,c;
    for(int i=1;i<=m;i++)
    {
        a=read();
        b=read();
        c=read();
        dis[a][b]=min(dis[a][b],c);
    }
}
void floyd()
{
    for(int k=1;k<=n;k++)
    {
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
            }
        }
    }
}
int main()
{
    init();
    floyd();
    print(dis[a][b]);
    return 0;
}```

回复

2 条回复,欢迎继续交流。

正在加载回复...