又是状态极菜的一场哈哈哈我不活啦😁
上一场眼瞎不判断s[ 0 ],这一场不开 LL我服了。。怎么老是犯低级错误
还发现一个不知道为啥的东西,关流之后再用快读就有出BUG,以后还是字符串多的时候关流,数字多的时候用快读把。。不可兼得。。
另,Sublime颜值居然这么高!真香了
D. 0-1 MST
题意:n个点,任意两点之间都有边相连,给的m条边是边权为1的边,其余边边权为0,求最小生成树
对于每个点,他能通过边权为0的边到达的点都“属于”这个点(连通分量???生成树中添加这个点就相当于把一堆点加进去了,白嫖)
如果忽略权值为1的边,原图就分离出多个连通分量,最小生成树的权值就是此时连通分量个数-1.
int n,m;
set<int>g[MAXN],s;
void bfs(int x)
{
queue<int>q;
q.push(x);
s.erase(x);
while(q.size())
{
x=q.front();q.pop();
std::vector<int> to_erease;
for(int i:s) if(g[x].count(i)==0) to_erease.push_back(i);
for(int i:to_erease) s.erase(i),q.push(i);
}
}
int main()
{
rd(n),rd(m);
for (int i = 0; i < m; ++i)
{
int x,y;
rd(x),rd(y);--x,--y;
g[x].insert(y);
g[y].insert(x);
}
int ans=0;
for (int i = 0; i < n ; ++i) s.insert(i);
for (int i = 0; i < n ; ++i) if(s.count(i)) ++ans,bfs(i);
cout<<ans-1<<endll;
//stop;
return 0;
}
B2. Character Swap (Hard Version)
#include <bits/stdc++.h>
using namespace std;
#define endll '\n'
#define C getchar()
using ll=long long;
#define pi acos(-1.0)
#define INF 0x3f3f3f3f
#define mod 1000000007
#define pii pair<int,int>
const int MAXN = 1e6 + 10;
#define stop system("pause")
#define lowbit(x) ((x) & (-x))
#define Temp template <typename T>
#define mem(a, b) memset(a, b, sizeof(a))
#define rep(i, a, b) for (int i = a; i <= b; i++)
#define fast ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
Temp inline void rd(T &s)
{
s = 0;T t = 1, k = C;
for (; k < '0' || k > '9'; k = C)if (k == '-') t = -1;
for (; k >= '0' && k <= '9'; k = C) s = (s << 1) + (s << 3) + (k ^ 48);
s *= t;
}
int n;
string s,t;
std::vector<pii > v;
bool slove()
{
cin>>n>>s>>t;
v.clear();
for (int i = 0; i < n; ++i)
{
if(s[i]==t[i]) continue;
for (int j = i+1; j < n; ++j)
{
if(s[i]==s[j])
{
v.push_back({j+1,i+1});
swap(s[j],t[i]);
break;
}
if(s[i]==t[j])
{
swap(s[j],t[j]);
v.push_back({j+1,j+1});
swap(s[j],t[i]);
v.push_back({j+1,i+1});
break;
}
}
}
return s==t;
}
int main()
{
fast;
int q;cin>>q;
while(q--)
{
if(slove())
{
cout<<"Yes\n"<<(int)v.size()<<endll;
for(auto i:v) cout<<i.first<<" "<<i.second<<endll;
}
else cout<<"No\n";
}
return 0;
} 
京公网安备 11010502036488号