/* Name: Solution: By Frather_ */ #include <iostream> #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <vector> #include <set> #include <map> #include <stack> #define ll long long #define InF 0x7fffffff #define kMax 10e5 #define kMin -10e5 #define kMod 998244353 #define kMod2 19260817 #define kMod3 19660813 #define base 1331 using namespace std; /*=========================================快读*/ int read() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9') { if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); } return x*f; } /*=====================================定义变量*/ /*===================================自定义函数*/ /*=======================================主函数*/ int main() { return 0; }
int read() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9') { if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); } return x*f; } int main() { int n; n=read(); }
using namespace std; /*=========================================快读*/ template <typename Temp> inline void read(Temp &x) { Temp f = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') f = -1; c = getchar(); } while (c >= '0' && c <= '9') { x = (x * 10) + (c ^ 48); c = getchar(); } if (c != '.') { x *= f; return; } c = getchar(); Temp base = 0.1; while(c >= '0' && c <= '9') { x += (c ^ '0') * base; base /= 10; c = getchar(); } x *= f; } int main() { int n; read(n); }
int KMax(int a,int b) { return a>=b ? a : b; }
int KMin(int a,int b) { return a<=b ? a : b; }
优化和判断集合包含关系ios
P3367 【模板】并查集数据结构
int Find(int x)//查询 { return x==fa[x] ? x :fa[x]=Find(fa[x]); } int fa[1000010]; int main() { for(int i=1;i<=n;i++)//初始化 fa[i]=i; }
#include <iostream> #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <vector> #include <set> #include <map> #include <stack> #define ll long long #define InF 0x7fffffff #define kMax 10e5 #define kMin -10e5 #define kMOD 998244353 using namespace std; /*=========================================快读*/ int read() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9') { if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); } return x*f; } /*=====================================定义变量*/ int n, m, s; int f[10010][10010]; /*===================================自定义函数*/ void Floyd() { for(int i=1;i<=n;i++) f[i][i]=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) min(f[i][k],f[j][i]+f[i][k]); } /*=======================================主函数*/ int main() { n=read(); m=read(); s=read(); memset(f,0x3f,sizeof(f)); for(int i=1;i<=n;i++) { int from=read(); int to=read(); int dis=read(); min(f[from][to],dis); } Floyd(); for(int i=1;i<=m;i++) printf("%d ",f[s][i]); return 0; }