提交时间:2026-11-04 15:55:30
运行 ID: 43619
#include<bits/stdc++.h> #define low(x) ((x)&(-x)) #define int long long #define db long double #define fls fflush(stdout) using namespace std; constexpr long long inf=1e18; inline void read(int &x){ x=0;char c=getchar();bool neg=0; for(;!isdigit(c);c=getchar())neg=(c=='-'); for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48); if(neg)x=-x; } inline void read(string &x){ x="";char c=getchar(); for(;isspace(c);c=getchar()); for(;!isspace(c)&&c!=EOF;c=getchar())x+=c; } inline void read(char &x){ x=getchar(); while(isspace(x))x=getchar(); } template<typename... T> inline void read(T&... x){ (read(x),...); } template<typename T> inline void chmx(T &x,T const &y){ (x<y)?x=y:T(); } template<typename T> inline void chmn(T &x,T const &y){ (x>y)?x=y:T(); } // void slvA(){} // void slvB(){} int n,m,u[200005],v[200005],l[200005],k,p[200005],q[200005],t[200005]; int dis[605][605],mx[605][605]; void slv(){ read(n,m); memset(dis,0x3f,sizeof dis); for(int i=1;i<=m;i++){ read(u[i],v[i],l[i]); chmn(dis[u[i]][v[i]],l[i]); chmn(dis[v[i]][u[i]],l[i]); } 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++)chmn(dis[i][j],dis[i][k]+dis[k][j]); read(k); for(int i=1;i<=k;i++){ read(p[i],q[i],t[i]); if(dis[p[i]][q[i]]>t[i])k--,i--; } for(int i=1;i<=k;i++){ for(int j=1;j<=n;j++){ chmx(mx[q[i]][j],t[i]-dis[p[i]][j]); } } int ans=0; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++)if(l[i]+dis[j][v[i]]<=mx[j][u[i]]||l[i]+dis[j][u[i]]<=mx[j][v[i]]){ans++;break;} } cout<<ans<<endl; } signed main(){ // string s;int t;read(s,t);while(t--) // int t,c;read(c,t);while(t--) // int t,c;read(t,c);while(t--) // int t;read(t);while(t--) slv(); // if(c==1)slvA(); // if(s=="first")slvA(); // else slvB(); return 0; }