(codeforces)C. Socks
2017-04-16 11:25
155 查看
どこでもドア:http://codeforces.com/problemset/problem/731/C
并查集。。贪心。。
code:
并查集。。贪心。。
code:
const int MAX=2*1e5+5; int color[MAX],uni[MAX],sum[MAX],n,m,k,a,b; int get_boss(int x){ return x==uni[x] ? x : uni[x]=get_boss(uni[x]); } void union_(int x,int y) { int t1=get_boss(x); int t2=get_boss(y); if(t1!=t2) { uni[t1]=t2; sum[t2]+=sum[t1]; } } struct same_color{ map<int, int> ma; }s[MAX]; int main() { cin>>n>>m>>k; //将连通的袜子记为一“块”,并记录这一“块”的个数 for(int i=1;i<=n;i++){ cin>>color[i]; uni[i]=i; sum[i]=1; } for(int i=0;i<m;i++){ cin>>a>>b; union_(a,b); } //记录一共有多少“块” set<int> all_boss; for(int i=1;i<=n;i++){ int boss=get_boss(i); all_boss.insert(boss); s[boss].ma[color[i]]++; } //对于每一“块”袜子的颜色进行判断,找出相同颜色最多的哪一种袜子。 //那么要变颜色的袜子的个数即为这一块袜子总数-颜色最多的个数 int ans=0; set<int>::iterator it=all_boss.begin(); for(;it!=all_boss.end();it++){ map<int,int>::iterator itt=s[*it].ma.begin(); int cnt=0; for(;itt!=s[*it].ma.end();itt++){ if(itt->second>cnt) cnt=itt->second; } ans+=(sum[*it]-cnt); } cout<<ans<<endl; return 0; }
相关文章推荐
- CodeForces - 731C Socks(并查集)(贪心)
- CodeForces 460 A. Vasya and Socks(379A.New Year Candles)
- Codeforces 731C Socks 并查集
- CodeForces - 731C Socks(并查集)(贪心)
- 【codeforces 782A】Andryusha and Socks
- CodeForces 731C. Socks(DFS)
- CodeForces - 731C Socks(并查集)(贪心)
- CodeForces 731 C.Socks(贪心+并查集)
- CodeForces - 731C Socks(并查集)(贪心)
- CodeForces 731C-Socks(联通图 并查集)
- CodeForces 731C C - Socks 并查集
- CodeForces - 731C Socks(并查集)(贪心)
- CodeForces 731C C - Socks 并查集
- codeforces水题100道 第十五题 Codeforces Round #262 (Div. 2) A. Vasya and Socks (brute force)
- CodeForces - 731C Socks
- CodeForces - 731C Socks(并查集)(贪心)
- CodeForces - 731C~Socks(并查集+STL)
- CodeForces-460A-Vasya And Socks
- CodeForces - 731C Socks(并查集)(贪心)
- 【codeforces 731 C Socks】+ DFS