标签:std vector cstring while style 技术 生成树 main stream
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstdlib> 6 #include<cstring> 7 #include<queue> 8 #include<map> 9 #include<vector> 10 #define ll long long 11 #define inf 2147483611 12 #define MAXN 110 13 using namespace std; 14 inline int read() 15 { 16 int x=0,f=1;char ch=getchar(); 17 while(!isdigit(ch)) {if(ch==‘-‘) f=-1;ch=getchar();} 18 while(isdigit(ch)) {x=x*10+ch-‘0‘;ch=getchar();} 19 return x*f; 20 } 21 struct data {int u,v,val}e[MAXN*20]; 22 struct edge {int l,r,num}g[MAXN*20]; 23 int n,m,cnt,f[MAXN]; 24 void add(int u,int v,int w) {e[++cnt].u=u,e[cnt].v=v,e[cnt].val=w;} 25 int find(int x,bool k) 26 { 27 if(x==f[x]) return x; 28 if(k) return f[x]=find(f[x]); 29 else return find(f[x]); 30 } 31 bool ok(int u,int v) 32 { 33 int fa=find(u,1),fb=find(v,1); 34 if(fa==fb) return 1; 35 else {f[fa]=fb;return 0;} 36 } 37 bool kruskal() 38 { 39 cnt=0; 40 for(int i=1;i<=m;i++) 41 { 42 if(i==1||e[i].val!=e[i].) 43 if(!ok(fa,fb)) cnt++; 44 } 45 if(cnt<n-1) return 0; 46 else return 1; 47 } 48 int main() 49 { 50 n=read(),m=read(); 51 int a,b,c; 52 for(int i=1;i<=m;i++) {a=read(),b=read(),c=read();add(a,b,c);} 53 for(int i=1;i<=n;i++) f[i]=i; 54 if(!kruskal()) {printf("0");return 0;} 55 }
标签:std vector cstring while style 技术 生成树 main stream
原文地址:http://www.cnblogs.com/yyc-jack-0920/p/7861539.html