社区讨论
20pts求调 WA+AC
P10178 陌路寻诗礼参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m1jctavc
- 此快照首次捕获于
- 2024/09/26 21:52 去年
- 此快照最后确认于
- 2024/09/26 22:04 去年
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N=3e5+5;
struct node{
int go,ti;
};
bool cmp(node a,node b){
return a.go<b.go;
}
struct node1{
int id,v;
bool operator<(const node1 &A)const{
return A.v<v;
}
};
vector<node>edge[N];
int n,m,k,T,f,t;
bool vis[N];
int dis[N],ans[N];
bool cheak(){
for(int i=1;i<=n;i++){
sort(edge[i].begin(),edge[i].end(),cmp);
for(int j=1;j<edge[i].size();j++){
if(edge[i][j].go==edge[i][j-1].go){
return 0;
}
}
}
return 1;
}
void dijkstra(int st){
priority_queue<node1>q;
fill(dis+1,dis+1+n,0x7f);
fill(vis+1,vis+1+n,0);
fill(ans+1,ans+1+m,1);
if(!cheak()){
cout<<"No"<<endl;
for(int i=1;i<=n;i++){
edge[i].clear();
}
return ;
}
int maxn=INT_MIN;
dis[st]=0;
while(!q.empty()){
int u=q.top().id;
q.pop();
if(vis[u]){
continue;
}
vis[u]=1;
for(node e:edge[u]){
int v=e.go,id=e.ti;
if(dis[v]>dis[u]+1){
dis[v]=dis[u]+1;
q.push(node1{v,dis[v]});
}
else if(dis[v]==dis[u]+1){
ans[id]++;
maxn=max(maxn,ans[id]);
}
}
}
for(int i=1;i<=n;i++){
if(dis[i]==0x7f7f7f7f){
cout<<"No"<<endl;
return ;
}
}
if(maxn<=k){
cout<<"Yes"<<endl;
for(int i=1;i<=m;i++){
cout<<ans[i]<<" ";
}
cout<<endl;
}
else{
cout<<"No"<<endl;
}
for(int i=1;i<=n;i++){
edge[i].clear();
}
return ;
}
signed main(){
//freopen("string.in","r",stdin);
//freopen("string.out","w",stdout);
ios::sync_with_stdio(0);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cout.flush();
cin>>T;
while(T--){
cin>>n>>m>>k;
for(int i=1;i<=m;i++){
cin>>f>>t;
edge[f].push_back(node{t,i});
}
dijkstra(1);
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...