求调,全WA
查看原帖
求调,全WA
1376920
Whitecate楼主2025/1/20 18:12
#include <bits/stdc++.h>
using namespace std;
int n,m,k;
int dis[208][208],dp[5010];
struct node
{
    int t,idx;
    bool operator < (const node& rhs) const {return t < rhs.t;}
}pigs[5008];
int main()
{
    cin >> n >> m >> k;
    memset(dis,0xc0c0c0c0,sizeof(dis));
    for(int i = 1; i <= m; i++)
    {
        int u,v,w;
        cin >> u >> v >> w;
        dis[u][v] = dis[v][u] = w;
    }
    for(int i = 1; i <= n;i++)
    {
        dis[i][i] = 0;
    }
    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]);
            }
        }
    }
    for(int i = 1; i <= k; i++)
    {
        int t,v;
        cin >> t >> v;
        pigs[i].t = t;
        pigs[i].idx = v;
    }
    dp[0] = 0;
    int ans = 0;
    for(int i = 1; i <= k; i++)
    {
        for(int j = 0; j < i; j++)
        {
            if(dis[pigs[j].idx][pigs[i].idx] <= pigs[i].t - pigs[j].t)
            {
                dp[i] = max(dp[i],dp[j]+1);
            }
        }
        ans = max(ans,dp[i]);
    }
    cout << ans;
    return 0;
}
2025/1/20 18:12
加载中...