QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#609201 | #7991. 最小环 | binbin | WA | 282ms | 34508kb | C++14 | 3.0kb | 2024-10-04 11:14:03 | 2024-10-04 11:14:06 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define pli pair<ll,int>
#define fi first
#define se second
const int maxn=3e5+5;
inline int read()
{
int x;
x=0;bool flag(0);char ch=getchar();
while(!isdigit(ch)) flag=ch=='-',ch=getchar();
while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
flag?x=-x:0;
return x;
}
struct Edge
{
int tot;
int head[maxn];
struct edgenode{int to,nxt;ll w;}edge[maxn*2];
inline void add(int x,int y,int z)
{
tot++;
edge[tot].to=y;
edge[tot].w=z;
edge[tot].nxt=head[x];
head[x]=tot;
}
}G,fG;
int n,m;
int from[maxn],rd[maxn],cd[maxn];
bool vis[maxn],del[maxn];
ll ans=1e18;
ll dis[maxn];
inline void dij(int st)
{
for(int i=0;i<=n;i++) vis[i]=false,dis[i]=1e18;
dis[st]=0;
priority_queue<pli,vector<pli>,greater<pli>>que;
que.push({0,st});
while(!que.empty())
{
int u=que.top().se;que.pop();
if(vis[u]) continue;
vis[u]=true;
for(int i=G.head[u];i;i=G.edge[i].nxt)
{
int v=G.edge[i].to;
if(dis[v]>dis[u]+G.edge[i].w)
{
dis[v]=dis[u]+G.edge[i].w;
que.push({dis[v],v});
}
}
}
}
inline void bfs()
{
queue<int>que;
for(int i=1;i<=n;i++) if(!rd[i]||!cd[i]) que.push(i),vis[i]=true;
while(!que.empty())
{
int u=que.front();que.pop();
if(!rd[u])
for(int i=G.head[u];i;i=G.edge[i].nxt)
{
int v=G.edge[i].to;
rd[v]--;
if(!vis[v]&&!rd[v]) que.push(v),vis[v]=true;
}
else
for(int i=fG.head[u];i;i=fG.edge[i].nxt)
{
int v=fG.edge[i].to;
cd[v]--;
if(!vis[v]&&!cd[v]) que.push(v),vis[v]=true;
}
}
}
signed main()
{
// scanf("%d%d",&n,&m);
n=read(),m=read();
for(int i=1;i<=m;i++)
{
int u,v,w;
// scanf("%d%d%d",&u,&v,&w);
u=read(),v=read(),w=read();
if(u==v) {ans=min(ans,(ll)w);continue;}
cd[u]++,rd[v]++;
G.add(u,v,w);from[v]=G.tot;
fG.add(v,u,w);
}
bfs();
for(int i=1;i<=n;i++)
{
if(cd[i]==1&&rd[i]==1)
{
G.edge[from[i]].to=G.edge[G.head[i]].to;
G.edge[from[i]].w+=G.edge[G.head[i]].w;
from[G.edge[G.head[i]].to]=from[i];
del[i]=true;
}
}
int cnt=0;
for(int i=1;i<=n;i++)
{
if(rd[i]&&cd[i]&&!del[i])
{
cnt++;
assert(cnt<=4000);
dij(i);
for(int u=1;u<=n;u++) if(dis[u]^dis[0]) for(int j=G.head[u];j;j=G.edge[j].nxt)
{
int v=G.edge[j].to;
if(v==i) ans=min(ans,dis[u]+G.edge[j].w);
}
}
}
printf("%lld",ans==1e18?-1:ans);
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 16416kb
input:
4 6 1 2 1 4 3 3 4 1 9 2 4 1 3 1 2 3 2 6
output:
7
result:
ok single line: '7'
Test #2:
score: 0
Accepted
time: 1ms
memory: 8148kb
input:
1 0
output:
-1
result:
ok single line: '-1'
Test #3:
score: 0
Accepted
time: 1ms
memory: 8116kb
input:
1 1 1 1 1
output:
1
result:
ok single line: '1'
Test #4:
score: 0
Accepted
time: 30ms
memory: 28976kb
input:
258420 258419 33061 33062 767169384 212916 212917 1741339 229881 229882 896760805 173467 173468 273055172 233189 233190 800433307 10157 10158 126766550 174605 174606 552176083 224030 224031 886617880 229102 229103 783848581 67588 67589 510826095 233648 233649 879695751 214453 214454 867104578 153140...
output:
-1
result:
ok single line: '-1'
Test #5:
score: 0
Accepted
time: 34ms
memory: 33848kb
input:
248016 248896 82688 82755 592665252 202847 203260 294408121 26821 28237 269132335 150967 152178 3125829 246069 247390 29492546 7470 7673 55843492 33975 35414 442802995 28451 28948 193736988 34484 34637 84441058 60168 60309 501991354 79579 79844 26854803 239672 239706 111702667 73548 73658 149840530 ...
output:
98674714245
result:
ok single line: '98674714245'
Test #6:
score: 0
Accepted
time: 43ms
memory: 31588kb
input:
270530 271285 80489 81855 218173724 188930 190845 783975756 29830 30626 22189315 234320 234472 70840355 198096 198272 300313423 224194 226906 105128197 115010 115834 37228105 134788 135583 18647938 257292 257358 98569041 146988 147215 69398857 248752 250002 409565478 62128 63751 839744551 121918 122...
output:
133486910467
result:
ok single line: '133486910467'
Test #7:
score: 0
Accepted
time: 201ms
memory: 29328kb
input:
222087 223141 123107 123811 2984035 216346 217464 675263 139741 141286 892140 77973 78018 453931100 38603 39546 157182459 13105 14616 775862 97035 97704 379136464 86254 88311 84193802 83968 84398 246202498 152486 160164 65619516 73213 73517 1129576 15618 16541 498613468 192241 195576 889879 21363 21...
output:
47599478278
result:
ok single line: '47599478278'
Test #8:
score: 0
Accepted
time: 214ms
memory: 32152kb
input:
212718 214066 104602 105717 148385760 163427 165307 437059346 108663 111803 784753745 15490 15784 789609 77598 80118 53908869 97776 98040 78287597 26994 27717 989577 134781 134919 531908 22362 24185 185680 114422 114890 609661 192852 192861 155477 45695 45800 35773 150695 152662 511678590 101629 102...
output:
36329947627
result:
ok single line: '36329947627'
Test #9:
score: 0
Accepted
time: 179ms
memory: 28048kb
input:
166349 167207 127268 127447 264589535 87716 91194 596943 123233 126065 170996332 16886 20295 35862710 4657 7035 31814455 95412 96577 195164337 17282 19855 200600035 18848 20733 547079078 139859 141952 197062 124361 126887 37905401 30749 32439 248082130 115409 121655 13113841 85640 88061 989595 74722...
output:
30821798636
result:
ok single line: '30821798636'
Test #10:
score: 0
Accepted
time: 282ms
memory: 34508kb
input:
289406 290248 136815 139417 24401 82238 82679 391891 117261 117722 23784755 45898 47276 91613 19042 20538 139326255 90781 91014 33771 173238 174945 166532570 64778 65593 89778641 107363 112432 3864090 260499 261031 165160 167079 167190 807727902 15135 17610 819060894 46707 48909 252893 51782 55878 3...
output:
61125659219
result:
ok single line: '61125659219'
Test #11:
score: 0
Accepted
time: 34ms
memory: 33616kb
input:
246266 246265 67999 29611 208851615 22833 19844 11567655 78556 60887 111689338 95799 91984 129780604 41384 117633 410486433 7780 17854 417509938 16799 26207 657779642 94022 203027 902990247 41361 49284 914930989 188504 211149 506036119 55526 231127 316210314 179380 117042 590986492 198142 119962 623...
output:
-1
result:
ok single line: '-1'
Test #12:
score: 0
Accepted
time: 29ms
memory: 28500kb
input:
211768 213001 149297 26223 476199539 41008 36464 884082193 55217 33464 115782442 68840 35424 855362664 143738 85588 100080439 40110 28162 373005241 129902 66381 475925374 201288 125187 14707055 137096 124072 115900270 133421 107543 256018220 6224 2375 672655723 35440 9684 72896288 59199 35246 339260...
output:
-1
result:
ok single line: '-1'
Test #13:
score: -100
Wrong Answer
time: 23ms
memory: 27088kb
input:
189247 189247 40564 40565 126861810 103097 103098 125735427 23599 23600 699624689 118819 118820 988946397 165617 165618 98692171 77479 77480 379839193 110553 110554 938974540 115537 115538 214424513 142294 142295 245482087 72445 72446 983499445 130871 130872 557270990 91433 91434 224165097 78267 782...
output:
-1
result:
wrong answer 1st lines differ - expected: '89784394212359', found: '-1'